<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <title>Changelog | Butano Docs</title>
  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,600,600i%7CSource+Code+Pro:400,400i,600" />
  <link rel="stylesheet" href="m-dark+documentation.compiled.css" />
  <link rel="icon" href="favicon-dark.png" type="image/png" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta name="theme-color" content="#22272e" />
</head>
<body>
<header><nav id="navigation">
  <div class="m-container">
    <div class="m-row">
      <span id="m-navbar-brand" class="m-col-t-8 m-col-m-none m-left-m">
        <a href="https://github.com/GValiente/butano">Butano</a> <span class="m-breadcrumb">|</span> <a href="index.html" class="m-thin">Docs</a>
      </span>
      <div class="m-col-t-4 m-hide-m m-text-right m-nopadr">
        <a href="#search" class="m-doc-search-icon" title="Search" onclick="return showSearch()"><svg style="height: 0.9rem;" viewBox="0 0 16 16">
          <path id="m-doc-search-icon-path" d="m6 0c-3.31 0-6 2.69-6 6 0 3.31 2.69 6 6 6 1.49 0 2.85-0.541 3.89-1.44-0.0164 0.338 0.147 0.759 0.5 1.15l3.22 3.79c0.552 0.614 1.45 0.665 2 0.115 0.55-0.55 0.499-1.45-0.115-2l-3.79-3.22c-0.392-0.353-0.812-0.515-1.15-0.5 0.895-1.05 1.44-2.41 1.44-3.89 0-3.31-2.69-6-6-6zm0 1.56a4.44 4.44 0 0 1 4.44 4.44 4.44 4.44 0 0 1-4.44 4.44 4.44 4.44 0 0 1-4.44-4.44 4.44 4.44 0 0 1 4.44-4.44z"/>
        </svg></a>
        <a id="m-navbar-show" href="#navigation" title="Show navigation"></a>
        <a id="m-navbar-hide" href="#" title="Hide navigation"></a>
      </div>
      <div id="m-navbar-collapse" class="m-col-t-12 m-show-m m-col-m-none m-right-m">
        <div class="m-row">
          <ol class="m-col-t-6 m-col-m-none">
            <li><a href="pages.html">Pages</a></li>
            <li><a href="modules.html">Modules</a></li>
          </ol>
          <ol class="m-col-t-6 m-col-m-none" start="3">
            <li><a href="namespaces.html">Namespaces</a></li>
            <li><a href="annotated.html">Classes</a></li>
            <li><a href="files.html">Files</a></li>
            <li class="m-show-m"><a href="#search" class="m-doc-search-icon" title="Search" onclick="return showSearch()"><svg style="height: 0.9rem;" viewBox="0 0 16 16">
              <use href="#m-doc-search-icon-path" />
            </svg></a></li>
          </ol>
        </div>
      </div>
    </div>
  </div>
</nav></header>
<main><article>
  <div class="m-container m-container-inflatable">
    <div class="m-row">
      <div class="m-col-l-10 m-push-l-1">
        <h1>
          Changelog
        </h1>
        <nav class="m-block m-default">
          <h3>Contents</h3>
          <ul>
            <li><a href="#changelog_20_3_2">20.3.2</a></li>
            <li><a href="#changelog_20_3_1">20.3.1</a></li>
            <li><a href="#changelog_20_3_0">20.3.0</a></li>
            <li><a href="#changelog_20_2_0">20.2.0</a></li>
            <li><a href="#changelog_20_1_0">20.1.0</a></li>
            <li><a href="#changelog_20_0_0">20.0.0</a></li>
            <li><a href="#changelog_19_5_0">19.5.0</a></li>
            <li><a href="#changelog_19_4_1">19.4.1</a></li>
            <li><a href="#changelog_19_4_0">19.4.0</a></li>
            <li><a href="#changelog_19_3_0">19.3.0</a></li>
            <li><a href="#changelog_19_2_0">19.2.0</a></li>
            <li><a href="#changelog_19_1_0">19.1.0</a></li>
            <li><a href="#changelog_19_0_0">19.0.0</a></li>
            <li><a href="#changelog_18_9_0">18.9.0</a></li>
            <li><a href="#changelog_18_8_0">18.8.0</a></li>
            <li><a href="#changelog_18_7_1">18.7.1</a></li>
            <li><a href="#changelog_18_7_0">18.7.0</a></li>
            <li><a href="#changelog_18_6_0">18.6.0</a></li>
            <li><a href="#changelog_18_5_0">18.5.0</a></li>
            <li><a href="#changelog_18_4_0">18.4.0</a></li>
            <li><a href="#changelog_18_3_0">18.3.0</a></li>
            <li><a href="#changelog_18_2_1">18.2.1</a></li>
            <li><a href="#changelog_18_2_0">18.2.0</a></li>
            <li><a href="#changelog_18_1_0">18.1.0</a></li>
            <li><a href="#changelog_18_0_1">18.0.1</a></li>
            <li><a href="#changelog_18_0_0">18.0.0</a></li>
            <li><a href="#changelog_17_9_0">17.9.0</a></li>
            <li><a href="#changelog_17_8_1">17.8.1</a></li>
            <li><a href="#changelog_17_8_0">17.8.0</a></li>
            <li><a href="#changelog_17_7_0">17.7.0</a></li>
            <li><a href="#changelog_17_6_0">17.6.0</a></li>
            <li><a href="#changelog_17_5_0">17.5.0</a></li>
            <li><a href="#changelog_17_4_0">17.4.0</a></li>
            <li><a href="#changelog_17_3_0">17.3.0</a></li>
            <li><a href="#changelog_17_2_0">17.2.0</a></li>
            <li><a href="#changelog_17_1_1">17.1.1</a></li>
            <li><a href="#changelog_17_1_0">17.1.0</a></li>
            <li><a href="#changelog_17_0_0">17.0.0</a></li>
            <li><a href="#changelog_16_6_0">16.6.0</a></li>
            <li><a href="#changelog_16_5_0">16.5.0</a></li>
            <li><a href="#changelog_16_4_0">16.4.0</a></li>
            <li><a href="#changelog_16_3_0">16.3.0</a></li>
            <li><a href="#changelog_16_2_0">16.2.0</a></li>
            <li><a href="#changelog_16_1_0">16.1.0</a></li>
            <li><a href="#changelog_16_0_0">16.0.0</a></li>
            <li><a href="#changelog_15_9_0">15.9.0</a></li>
            <li><a href="#changelog_15_8_2">15.8.2</a></li>
            <li><a href="#changelog_15_8_1">15.8.1</a></li>
            <li><a href="#changelog_15_8_0">15.8.0</a></li>
            <li><a href="#changelog_15_7_1">15.7.1</a></li>
            <li><a href="#changelog_15_7_0">15.7.0</a></li>
            <li><a href="#changelog_15_6_0">15.6.0</a></li>
            <li><a href="#changelog_15_5_0">15.5.0</a></li>
            <li><a href="#changelog_15_4_1">15.4.1</a></li>
            <li><a href="#changelog_15_4_0">15.4.0</a></li>
            <li><a href="#changelog_15_3_2">15.3.2</a></li>
            <li><a href="#changelog_15_3_1">15.3.1</a></li>
            <li><a href="#changelog_15_3_0">15.3.0</a></li>
            <li><a href="#changelog_15_2_0">15.2.0</a></li>
            <li><a href="#changelog_15_1_0">15.1.0</a></li>
            <li><a href="#changelog_15_0_0">15.0.0</a></li>
            <li><a href="#changelog_14_1_0">14.1.0</a></li>
            <li><a href="#changelog_14_0_0">14.0.0</a></li>
            <li><a href="#changelog_13_18_0">13.18.0</a></li>
            <li><a href="#changelog_13_17_0">13.17.0</a></li>
            <li><a href="#changelog_13_16_1">13.16.1</a></li>
            <li><a href="#changelog_13_16_0">13.16.0</a></li>
            <li><a href="#changelog_13_15_0">13.15.0</a></li>
            <li><a href="#changelog_13_14_0">13.14.0</a></li>
            <li><a href="#changelog_13_13_0">13.13.0</a></li>
            <li><a href="#changelog_13_12_1">13.12.1</a></li>
            <li><a href="#changelog_13_12_0">13.12.0</a></li>
            <li><a href="#changelog_13_11_0">13.11.0</a></li>
            <li><a href="#changelog_13_10_1">13.10.1</a></li>
            <li><a href="#changelog_13_10_0">13.10.0</a></li>
            <li><a href="#changelog_13_9_0">13.9.0</a></li>
            <li><a href="#changelog_13_8_1">13.8.1</a></li>
            <li><a href="#changelog_13_8_0">13.8.0</a></li>
            <li><a href="#changelog_13_7_0">13.7.0</a></li>
            <li><a href="#changelog_13_6_0">13.6.0</a></li>
            <li><a href="#changelog_13_5_0">13.5.0</a></li>
            <li><a href="#changelog_13_4_0">13.4.0</a></li>
            <li><a href="#changelog_13_3_1">13.3.1</a></li>
            <li><a href="#changelog_13_3_0">13.3.0</a></li>
            <li><a href="#changelog_13_2_0">13.2.0</a></li>
            <li><a href="#changelog_13_1_1">13.1.1</a></li>
            <li><a href="#changelog_13_1_0">13.1.0</a></li>
            <li><a href="#changelog_13_0_0">13.0.0</a></li>
            <li><a href="#changelog_12_5_0">12.5.0</a></li>
            <li><a href="#changelog_12_4_0">12.4.0</a></li>
            <li><a href="#changelog_12_3_0">12.3.0</a></li>
            <li><a href="#changelog_12_2_0">12.2.0</a></li>
            <li><a href="#changelog_12_1_0">12.1.0</a></li>
            <li><a href="#changelog_12_0_0">12.0.0</a></li>
            <li><a href="#changelog_11_0_1">11.0.1</a></li>
            <li><a href="#changelog_11_0_0">11.0.0</a></li>
            <li><a href="#changelog_10_7_0">10.7.0</a></li>
            <li><a href="#changelog_10_6_1">10.6.1</a></li>
            <li><a href="#changelog_10_6_0">10.6.0</a></li>
            <li><a href="#changelog_10_5_0">10.5.0</a></li>
            <li><a href="#changelog_10_4_0">10.4.0</a></li>
            <li><a href="#changelog_10_3_0">10.3.0</a></li>
            <li><a href="#changelog_10_2_0">10.2.0</a></li>
            <li><a href="#changelog_10_1_0">10.1.0</a></li>
            <li><a href="#changelog_10_0_0">10.0.0</a></li>
            <li><a href="#changelog_9_5_0">9.5.0</a></li>
            <li><a href="#changelog_9_4_1">9.4.1</a></li>
            <li><a href="#changelog_9_4_0">9.4.0</a></li>
            <li><a href="#changelog_9_3_0">9.3.0</a></li>
            <li><a href="#changelog_9_2_0">9.2.0</a></li>
            <li><a href="#changelog_9_1_1">9.1.1</a></li>
            <li><a href="#changelog_9_1_0">9.1.0</a></li>
            <li><a href="#changelog_9_0_0">9.0.0</a></li>
            <li><a href="#changelog_8_10_0">8.10.0</a></li>
            <li><a href="#changelog_8_9_0">8.9.0</a></li>
            <li><a href="#changelog_8_8_0">8.8.0</a></li>
            <li><a href="#changelog_8_7_0">8.7.0</a></li>
            <li><a href="#changelog_8_6_0">8.6.0</a></li>
            <li><a href="#changelog_8_5_0">8.5.0</a></li>
            <li><a href="#changelog_8_4_0">8.4.0</a></li>
            <li><a href="#changelog_8_3_0">8.3.0</a></li>
            <li><a href="#changelog_8_2_0">8.2.0</a></li>
            <li><a href="#changelog_8_1_0">8.1.0</a></li>
            <li><a href="#changelog_8_0_0">8.0.0</a></li>
            <li><a href="#changelog_7_8_0">7.8.0</a></li>
            <li><a href="#changelog_7_7_0">7.7.0</a></li>
            <li><a href="#changelog_7_6_0">7.6.0</a></li>
            <li><a href="#changelog_7_5_1">7.5.1</a></li>
            <li><a href="#changelog_7_5_0">7.5.0</a></li>
            <li><a href="#changelog_7_4_0">7.4.0</a></li>
            <li><a href="#changelog_7_3_0">7.3.0</a></li>
            <li><a href="#changelog_7_2_0">7.2.0</a></li>
            <li><a href="#changelog_7_1_1">7.1.1</a></li>
            <li><a href="#changelog_7_1_0">7.1.0</a></li>
            <li><a href="#changelog_7_0_1">7.0.1</a></li>
            <li><a href="#changelog_7_0_0">7.0.0</a></li>
            <li><a href="#changelog_6_18_0">6.18.0</a></li>
            <li><a href="#changelog_6_17_1">6.17.1</a></li>
            <li><a href="#changelog_6_17_0">6.17.0</a></li>
            <li><a href="#changelog_6_16_0">6.16.0</a></li>
            <li><a href="#changelog_6_15_0">6.15.0</a></li>
            <li><a href="#changelog_6_14_0">6.14.0</a></li>
            <li><a href="#changelog_6_13_1">6.13.1</a></li>
            <li><a href="#changelog_6_13_0">6.13.0</a></li>
            <li><a href="#changelog_6_12_0">6.12.0</a></li>
            <li><a href="#changelog_6_11_0">6.11.0</a></li>
            <li><a href="#changelog_6_10_0">6.10.0</a></li>
            <li><a href="#changelog_6_9_0">6.9.0</a></li>
            <li><a href="#changelog_6_8_0">6.8.0</a></li>
            <li><a href="#changelog_6_7_0">6.7.0</a></li>
            <li><a href="#changelog_6_6_2">6.6.2</a></li>
            <li><a href="#changelog_6_6_1">6.6.1</a></li>
            <li><a href="#changelog_6_6_0">6.6.0</a></li>
            <li><a href="#changelog_6_5_0">6.5.0</a></li>
            <li><a href="#changelog_6_4_0">6.4.0</a></li>
            <li><a href="#changelog_6_3_0">6.3.0</a></li>
            <li><a href="#changelog_6_2_0">6.2.0</a></li>
            <li><a href="#changelog_6_1_0">6.1.0</a></li>
            <li><a href="#changelog_6_0_0">6.0.0</a></li>
            <li><a href="#changelog_5_3_1">5.3.1</a></li>
            <li><a href="#changelog_5_3_0">5.3.0</a></li>
            <li><a href="#changelog_5_2_0">5.2.0</a></li>
            <li><a href="#changelog_5_1_0">5.1.0</a></li>
            <li><a href="#changelog_5_0_0">5.0.0</a></li>
            <li><a href="#changelog_4_4_0">4.4.0</a></li>
            <li><a href="#changelog_4_3_0">4.3.0</a></li>
            <li><a href="#changelog_4_2_0">4.2.0</a></li>
            <li><a href="#changelog_4_1_0">4.1.0</a></li>
            <li><a href="#changelog_4_0_0">4.0.0</a></li>
            <li><a href="#changelog_3_3_0">3.3.0</a></li>
            <li><a href="#changelog_3_2_1">3.2.1</a></li>
            <li><a href="#changelog_3_2_0">3.2.0</a></li>
            <li><a href="#changelog_3_1_0">3.1.0</a></li>
            <li><a href="#changelog_3_0_0">3.0.0</a></li>
            <li><a href="#changelog_2_0_0">2.0.0</a></li>
            <li><a href="#changelog_1_0_0">1.0.0</a></li>
            <li><a href="#changelog_0_4_0">0.4.0</a></li>
            <li><a href="#changelog_0_3_0">0.3.0</a></li>
            <li><a href="#changelog_0_2_0">0.2.0</a></li>
            <li><a href="#changelog_0_1_0">0.1.0</a></li>
          </ul>
        </nav>
<section id="changelog_20_3_2"><h2><a href="#changelog_20_3_2">20.3.2</a></h2><p><a href="group__sprite.html#gad3d5090a016bc879107f7e53fe9c7c4c" class="m-doc">BN_<wbr />CFG_<wbr />SPRITE_<wbr />TILES_<wbr />LOG_<wbr />ENABLED</a> and <a href="group__bg.html#ga5f1c4a1b2bc0b5583782c0a0da432c9f" class="m-doc">BN_<wbr />CFG_<wbr />BG_<wbr />BLOCKS_<wbr />LOG_<wbr />ENABLED</a> fixed.</p></section><section id="changelog_20_3_1"><h2><a href="#changelog_20_3_1">20.3.1</a></h2><ul><li><a href="https://github.com/stuij/apex-audio-system">AAS</a> processed audio size log removed since it was broken.</li><li><code>audio_player</code> example shows the audio backend.</li><li><a href="https://gvaliente.itch.io/rr-project">RR Project</a> added to <code>README.md</code>.</li></ul></section><section id="changelog_20_3_0"><h2><a href="#changelog_20_3_0">20.3.0</a></h2><ul><li><a href="classbn_1_1unique__ptr.html" class="m-doc">bn::<wbr />unique_ptr</a> constructors with a deleter added.</li><li><a href="classbn_1_1unique__ptr.html" class="m-doc">bn::<wbr />unique_ptr</a> doesn&#x27;t call the deleter if it doesn&#x27;t contain a managed object.</li><li><a href="classbn_1_1unordered__map.html" class="m-doc">bn::<wbr />unordered_map</a> and <a href="classbn_1_1unordered__set.html" class="m-doc">bn::<wbr />unordered_set</a> documentation improved.</li><li><a href="faq.html#faq_donate" class="m-doc">Is there any way to donate to Butano?</a> question added to the <a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page.</li></ul></section><section id="changelog_20_2_0"><h2><a href="#changelog_20_2_0">20.2.0</a></h2><ul><li>Custom palette effects added. Check the <code>palettes</code> example to see how to apply them.</li><li><a href="group__log.html#gaa81f7287c79c0bfbbd80ee59f6f67f37" class="m-doc">bn::<wbr />log_level</a> and <a href="group__log.html#gafb81f496895690e1178e5567d8ff34df" class="m-doc">BN_<wbr />LOG_<wbr />LEVEL</a> added.</li><li><a href="classbn_1_1pool.html" class="m-doc">bn::<wbr />pool</a> alignment fixed.</li><li><a href="https://michaelchase.itch.io/heartwrench-advance">Heartwrench Advance</a> added to <code>README.md</code>.</li></ul></section><section id="changelog_20_1_0"><h2><a href="#changelog_20_1_0">20.1.0</a></h2><ul><li><a href="classbn_1_1fixed__t.html#aefdd40656c22ef601f0066c57e19eb0b" class="m-doc">bn::<wbr />fixed::<wbr />shift_integer</a>, <a href="classbn_1_1fixed__t.html#ac08d8ecdb3da9d247188b2ced1244e0e" class="m-doc">bn::<wbr />fixed::<wbr />shift_multiplication</a>, <a href="classbn_1_1fixed__t.html#aab70d33814ea7325336c8a7c977ea893" class="m-doc">bn::<wbr />fixed::<wbr />unsafe_shift_multiplication</a>, <a href="classbn_1_1fixed__t.html#aab70d33814ea7325336c8a7c977ea893" class="m-doc">bn::<wbr />fixed::<wbr />unsafe_shift_multiplication</a>, <a href="classbn_1_1fixed__t.html#a94cd60cb5a22656bbac78b411c5fbafa" class="m-doc">bn::<wbr />fixed::<wbr />shift_division</a> and <a href="classbn_1_1fixed__t.html#ad627b9513b1dc43f0e8afe3b7d201133" class="m-doc">bn::<wbr />fixed::<wbr />unsafe_shift_division</a> added.</li><li><a href="classbn_1_1fixed__t.html#a0686578f6f6b29667688eea523ea364a" class="m-doc">bn::<wbr />fixed::<wbr />left_shift</a> and <a href="classbn_1_1fixed__t.html#ae92711484324c5f04b32c6d4dfbaef77" class="m-doc">bn::<wbr />fixed::<wbr />right_shift</a> added.</li><li><a href="https://blocksds.skylyrac.net/docs/maxmod/index.html">Maxmod</a> updated to 1.14.0.</li><li><a href="classbn_1_1best__fit__allocator.html" class="m-doc">bn::<wbr />best_fit_allocator</a> alignment increased from 4 to 8 bytes.</li><li>ROM usage reduced (thanks yeon!).</li><li><a href="namespacebn_1_1bg__maps.html" class="m-doc">bn::<wbr />bg_maps</a> and <a href="namespacebn_1_1bg__tiles.html" class="m-doc">bn::<wbr />bg_tiles</a> documentation improved.</li><li>Assets tool typo fixed (thanks alope107!).</li><li><a href="faq.html#faq_sprites_top_left" class="m-doc">Why are sprite coordinates relative to the center of the screen instead of the top-left corner?</a>, <a href="faq.html#faq_backgrounds_top_left" class="m-doc">Why are background coordinates relative to the center of the screen instead of the top-left corner?</a> and <a href="faq.html#faq_audio_music_crash" class="m-doc">Why the game crashes when some Direct Sound songs are played?</a> questions improved.</li><li><a href="https://github.com/copyrat90/butano-ldtk">butano-ldtk</a> added to <code>README.md</code>.</li></ul></section><section id="changelog_20_0_0"><h2><a href="#changelog_20_0_0">20.0.0</a></h2><ul><li>Butano now uses <a href="https://blocksds.skylyrac.net">BlocksDS&#x27;s</a> <a href="https://blocksds.skylyrac.net/docs/maxmod/index.html">Maxmod fork</a> for Direct Sound audio playback: it provides new features, bug fixes and reduced IWRAM usage.</li><li>Audio events support added. Check <a href="https://blocksds.skylyrac.net/docs/maxmod/md_documentation_2using__song__events.html">Maxmod documentation</a> and the <code>audio</code> example to see how to insert and read audio events.</li><li><a href="group__audio.html#ga83a83c1efc0dec2d02ad0e430680bb8c" class="m-doc">bn::<wbr />audio_mixing_rate</a>, <a href="namespacebn_1_1audio.html#abee85fe01be066ae68f589f86f1e2f4a" class="m-doc">bn::<wbr />audio::<wbr />available_mixing_rates</a>, <a href="namespacebn_1_1audio.html#a001fe2849e79922449b586d92f056508" class="m-doc">bn::<wbr />audio::<wbr />mixing_rate</a> and <a href="namespacebn_1_1audio.html#a821b50744cb5cea0f14407df0beb4b10" class="m-doc">bn::<wbr />audio::<wbr />set_mixing_rate</a> added.</li><li><a href="namespacebn_1_1jingle.html#a7bdce9dcd002d1c9309a0a3f1ad75c89" class="m-doc">bn::<wbr />jingle::<wbr />pause</a>, <a href="namespacebn_1_1jingle.html#a47d41e3e82f7f058c0e085307c4ac637" class="m-doc">bn::<wbr />jingle::<wbr />resume</a> and <a href="namespacebn_1_1jingle.html#ae6ea926a2765feeb120f6b2d61964ab7" class="m-doc">bn::<wbr />jingle::<wbr />stop</a> added.</li><li><a href="namespacebn_1_1core.html#a2e0b0db4d5d5fce0c70e0b0c5b5accae" class="m-doc">bn::<wbr />core::<wbr />update_callback</a> and <a href="namespacebn_1_1core.html#acdd2125c5251b572b576288471783ed7" class="m-doc">bn::<wbr />core::<wbr />set_update_callback</a> added.</li><li><a href="namespacebn_1_1memory.html#a6b84181b5e8e1eca783b61f1b0c782ea" class="m-doc">bn::<wbr />memory::<wbr />copy</a> and <a href="namespacebn_1_1memory.html#a035feaf6d2f14313185724e54f168424" class="m-doc">bn::<wbr />memory::<wbr />clear</a> array overloads added.</li><li><a href="classbn_1_1regular__bg__builder.html" class="m-doc">bn::<wbr />regular_bg_builder</a> and <a href="classbn_1_1affine__bg__builder.html" class="m-doc">bn::<wbr />affine_bg_builder</a> top-left coordinates fixed.</li><li>Mixing rate can be changed in the <code>audio_player</code> example.</li></ul></section><section id="changelog_19_5_0"><h2><a href="#changelog_19_5_0">19.5.0</a></h2><ul><li><a href="classbn_1_1istring.html#a4ef1842332fd16308de6f19ccd4e8d94" class="m-doc">bn::<wbr />istring::<wbr />from_char_array</a> added.</li><li><a href="classbn_1_1istring__base.html" class="m-doc">bn::<wbr />istring_base</a> public constructor documentation improved.</li><li><a href="faq.html#faq_screen_pixels" class="m-doc">Can I directly manipulate screen pixels?</a> question added to the <a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page.</li></ul></section><section id="changelog_19_4_1"><h2><a href="#changelog_19_4_1">19.4.1</a></h2><p>Files in audio folders with unknown extensions are ignored.</p></section><section id="changelog_19_4_0"><h2><a href="#changelog_19_4_0">19.4.0</a></h2><ul><li><a href="https://www.coranac.com/man/tonclib">Tonclib</a> updated to 1.4.5.</li><li><a href="https://maxmod.org">Maxmod</a> updated to 2.1.0.</li><li><a href="group__math.html#ga3f84312f5751bc707185733a2726ed2a" class="m-doc">bn::<wbr />safe_degrees_angle</a> fixed.</li></ul></section><section id="changelog_19_3_0"><h2><a href="#changelog_19_3_0">19.3.0</a></h2><ul><li><a href="namespacebn_1_1hdma.html#a64f7ad53d6f3e7b526c80b20282981c1" class="m-doc">bn::<wbr />hdma::<wbr />high_priority_interrupt_handler</a>, <a href="namespacebn_1_1hdma.html#a4bb45b70af3dd43b80247df403cf09bf" class="m-doc">bn::<wbr />hdma::<wbr />set_high_priority_interrupt_handler</a> and <a href="group__hdma.html#ga583f458ddd91dff99e74d8653f00c961" class="m-doc">BN_<wbr />CFG_<wbr />HDMA_<wbr />HIGH_<wbr />PRIORITY_<wbr />IRQ_<wbr />ENABLED</a> added.</li><li>GCC 15 build fixed (thanks asie!).</li><li>Huffman decompression is implemented by the BIOS to avoid relying on decompiled code.</li><li><a href="classbn_1_1time.html#acb2879ec39c2a8824fbc7aad1b124237" class="m-doc">bn::<wbr />time::<wbr />set_minute</a> and <a href="classbn_1_1time.html#a904f2a48d794d277d7e5b90aa781085a" class="m-doc">bn::<wbr />time::<wbr />set_second</a> documentation fixed.</li></ul></section><section id="changelog_19_2_0"><h2><a href="#changelog_19_2_0">19.2.0</a></h2><ul><li><a href="classbn_1_1ivector.html#ab6d4aab8354175864e1c8940f94bfd1d" class="m-doc">bn::<wbr />ivector::<wbr />insert</a>, <a href="classbn_1_1ilist.html#a625f80a453595aad66c8213a5a9e69a1" class="m-doc">bn::<wbr />ilist::<wbr />insert</a> and <a href="classbn_1_1iforward__list.html#afecfb147bd75571f528c03cae0dd6fcb" class="m-doc">bn::<wbr />iforward_list::<wbr />insert_after</a> overloads added.</li><li><a href="group__sprite.html#ga34b7c5936ff49aaa85c774855783d356" class="m-doc">BN_<wbr />CFG_<wbr />SPRITES_<wbr />USE_<wbr />IWRAM</a> added.</li><li>Import tool now checks if all input audio files have been imported or not.</li><li>Release sounds from <a href="https://github.com/stuij/apex-audio-system">AAS</a> queue fixed.</li><li><a href="faq.html#faq_sprites_sort_layers" class="m-doc">Why do I get &quot;no more sprite sort layers available&quot; errors?</a> question added to the <a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page.</li></ul></section><section id="changelog_19_1_0"><h2><a href="#changelog_19_1_0">19.1.0</a></h2><ul><li><a href="classbn_1_1isprite__animate__action.html#a4ca1f12a7af9197390fc1096cc802619" class="m-doc">bn::<wbr />sprite_animate_action::<wbr />set_current_index</a> and <a href="classbn_1_1isprite__cached__animate__action.html#a65a85b03698acf673e2f2c3ce5758b6a" class="m-doc">bn::<wbr />sprite_cached_animate_action::<wbr />set_current_index</a> added.</li><li><a href="classbn_1_1isprite__animate__action.html#ad04e53c666a740fe1fa644bbf3384ddb" class="m-doc">bn::<wbr />sprite_animate_action::<wbr />set_next_change_updates</a> and <a href="classbn_1_1isprite__cached__animate__action.html#aadb858c10a6387bfbd80165167467b6c" class="m-doc">bn::<wbr />sprite_cached_animate_action::<wbr />set_next_change_updates</a> added.</li><li><a href="namespacebn_1_1hdma.html#a1aca5fcdb0e61bbce351c908851f7bb4" class="m-doc">bn::<wbr />hdma::<wbr />start</a> and <a href="namespacebn_1_1hdma.html#ae75aaa5c4ee26a0a18ca2261b3d98bd9" class="m-doc">bn::<wbr />hdma::<wbr />high_priority_start</a> check if the DMA channel is available.</li><li>Link-time optimization builds fixed.</li></ul></section><section id="changelog_19_0_0"><h2><a href="#changelog_19_0_0">19.0.0</a></h2><ul><li><code>aas</code> (<a href="https://github.com/stuij/apex-audio-system">Apex Audio System</a>) and <code>null</code> audio backends added. Audio backends can be specified with the <code>AUDIOBACKEND</code> makefile variable.</li><li><a href="group__audio.html#ga1771db534d475f52423a865a1f974654" class="m-doc">BN_<wbr />CFG_<wbr />AUDIO_<wbr />STEREO</a> and <a href="group__audio.html#gab0d547ea05a5ab8a50a3d22d0021fc48" class="m-doc">BN_<wbr />CFG_<wbr />AUDIO_<wbr />DYNAMIC_<wbr />MIXING</a> added.</li><li><code>null</code> DMG audio backend added. DMG audio backends can be specified with the <code>DMGAUDIOBACKEND</code> makefile variable.</li><li>EWRAM overclocking removed, as some GBA SPs crash after a few frames when enabled.</li><li>Sounds with higher priority are not discarded on the <a href="https://maxmod.org">Maxmod</a> queue when playing a new one.</li><li>Erase sounds from <a href="https://maxmod.org">Maxmod</a> queue fixed.</li></ul></section><section id="changelog_18_9_0"><h2><a href="#changelog_18_9_0">18.9.0</a></h2><ul><li><a href="classbn_1_1fixed__t.html#ab1a836f2529dc5b641dbd4e43e9d2e53" class="m-doc">bn::<wbr />fixed::<wbr />modulo</a> fixed.</li><li>Binary data folders documentation improved.</li><li>Some 3rd party games have been forked to work with this release.</li></ul></section><section id="changelog_18_8_0"><h2><a href="#changelog_18_8_0">18.8.0</a></h2><ul><li><a href="classbn_1_1best__fit__allocator.html#a928949d8be455d94c951d50888ccacc0" class="m-doc">bn::<wbr />best_fit_allocator::<wbr />check_empty_on_destructor</a> and <a href="classbn_1_1best__fit__allocator.html#aafba0ee16fbc894407e677c32a51184d" class="m-doc">bn::<wbr />best_fit_allocator::<wbr />set_check_empty_on_destructor</a> added.</li><li><a href="group__assert.html#gac7d5f8a27d4d558b268baf0db14ba952" class="m-doc">BN_<wbr />CFG_<wbr />ASSERT_<wbr />SHOW_<wbr />GENERAL_<wbr />INFO</a> added.</li><li><a href="group__assert.html#ga3c61a3849a33edc22c9b06c6781fd593" class="m-doc">BN_<wbr />CFG_<wbr />ASSERT_<wbr />TAG</a> added.</li><li>Import tool now allows to specify the width of sprites and sprite tiles. See the <a href="import.html#import_image" class="m-doc">Images</a> import guide to learn how to specify it.</li><li>Show the sum of the ticks of all entries in the profiler results.</li><li>CPU usage reduced in most resource managers.</li><li><a href="getting_started.html" class="m-doc">Getting started</a> guide improved.</li></ul></section><section id="changelog_18_7_1"><h2><a href="#changelog_18_7_1">18.7.1</a></h2><ul><li>Placement <code>new</code> calls with user-provided <code>operator new</code> overloads fixed.</li><li><a href="classbn_1_1unordered__map.html" class="m-doc">bn::<wbr />unordered_map</a> and <a href="classbn_1_1unordered__set.html" class="m-doc">bn::<wbr />unordered_set</a> clangd warnings fixed.</li></ul></section><section id="changelog_18_7_0"><h2><a href="#changelog_18_7_0">18.7.0</a></h2><ul><li><a href="group__green__swap.html#ga6ed8f658483577341079c6a880231745" class="m-doc">bn::<wbr />green_swap_mode</a> added (thanks Sono!). Check the <code>green_swap</code> example to see how to set how a background must be displayed when green swap is enabled.</li><li><a href="classbn_1_1unique__ptr.html" class="m-doc">bn::<wbr />unique_ptr</a> <code>operator&lt;&lt;</code> added.</li><li><a href="classbn_1_1ibitset.html" class="m-doc">bn::<wbr />ibitset</a> <code>operator&lt;&lt;</code> added.</li><li>Hash support for <a href="classbn_1_1ibitset.html" class="m-doc">bn::<wbr />ibitset</a> added.</li><li>More <a href="classbn_1_1istring__base.html" class="m-doc">bn::<wbr />istring_base</a> comparison operators added.</li><li><a href="classbn_1_1utf8__character.html" class="m-doc">bn::<wbr />utf8_character</a> validation improved.</li><li>Green swap disabled when the display is stopped.</li><li><code>libstdc++</code> is now linked by default (thanks asie!).</li><li><a href="faq.html#faq_delta_time" class="m-doc">How can I get the delta time?</a>, <a href="faq.html#faq_sprites_metasprites" class="m-doc">Does Butano support metasprites?</a> and <a href="faq.html#faq_backgrounds_animated" class="m-doc">How can I show a background with animated tiles?</a> questions added to the <a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page.</li><li><a href="faq.html#faq_standard" class="m-doc">Why can&#x27;t I use some standard functions and classes?</a> and <a href="faq.html#faq_memory_heap" class="m-doc">So I shouldn&#x27;t use the heap?</a> questions improved.</li><li><a href="getting_started_wt.html" class="m-doc">Getting started with Wonderful Toolchain</a> guide updated.</li><li><a href="qt_creator.html" class="m-doc">Qt Creator setup guide</a> improved.</li><li>Some spelling mistakes fixed.</li></ul></section><section id="changelog_18_6_0"><h2><a href="#changelog_18_6_0">18.6.0</a></h2><ul><li>Big maps maximum size is limited to 16384 pixels.</li><li><code>create_new</code> map methods are deprecated.</li><li>Small ROM usage reduction.</li><li><a href="classbn_1_1sprite__ptr.html#a43abcfceaff369dd7a24212976310438" class="m-doc">bn::<wbr />sprite_ptr::<wbr />create_optional</a> fixed.</li><li><a href="faq.html#faq_subfolder" class="m-doc">Can I use subfolders for code and assets?</a> question added to the <a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page.</li></ul></section><section id="changelog_18_5_0"><h2><a href="#changelog_18_5_0">18.5.0</a></h2><ul><li><a href="classbn_1_1sprite__text__generator.html" class="m-doc">bn::<wbr />sprite_text_generator</a> uses one sprite per character if the space between characters is too big.</li><li><a href="classbn_1_1sprite__ptr.html#abd338057ab0af6ac191d05fd1ca75aab" class="m-doc">bn::<wbr />sprite_ptr::<wbr />horizontal_shear</a> and <a href="classbn_1_1sprite__ptr.html#a7dfa280cadbcf32ff58e2eb9e0b5ba52" class="m-doc">bn::<wbr />sprite_ptr::<wbr />vertical_shear</a> fixed.</li><li><a href="classbn_1_1sprite__font.html" class="m-doc">bn::<wbr />sprite_font</a> space between characters validation fixed.</li><li><a href="faq.html#faq_memory_arm_iwram" class="m-doc">How can I generate ARM code in IWRAM?</a> question added to the <a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page.</li></ul></section><section id="changelog_18_4_0"><h2><a href="#changelog_18_4_0">18.4.0</a></h2><ul><li><a href="classbn_1_1random.html#a26544407e072e57f4ad00d9e040d19a9" class="m-doc">bn::<wbr />random::<wbr />get_bool</a> and <a href="classbn_1_1seed__random.html#aa7a6e4b2f5e5eafb0d271083c533a855" class="m-doc">bn::<wbr />seed_random::<wbr />get_bool</a> added.</li><li><a href="classbn_1_1bitset__ref.html" class="m-doc">bn::<wbr />bitset_ref</a> move constructor added.</li><li><a href="group__bg.html#ga43704b4480caac1208d78dac8286ea83" class="m-doc">BN_<wbr />CFG_<wbr />BG_<wbr />BLOCKS_<wbr />SANITY_<wbr />CHECK_<wbr />ENABLED</a> and <a href="group__sprite.html#ga0fb63c370d281c0570b6a19ee838c380" class="m-doc">BN_<wbr />CFG_<wbr />SPRITE_<wbr />TILES_<wbr />SANITY_<wbr />CHECK_<wbr />ENABLED</a> added.</li><li><a href="classbn_1_1random.html#a5e9c1dadffd6b24904a758155a5995c2" class="m-doc">bn::<wbr />random::<wbr />get_int</a> and <a href="classbn_1_1seed__random.html#accf382eb18313262155b9fc29d582c05" class="m-doc">bn::<wbr />seed_random::<wbr />get_int</a> optimized.</li><li>BG blocks manager allocation fixed.</li><li><a href="namespacebn_1_1sprite__tiles.html#ac38355bc66b2f69750241c73662dcf6c" class="m-doc">bn::<wbr />sprite_tiles::<wbr />log_status</a> items count fixed.</li></ul></section><section id="changelog_18_3_0"><h2><a href="#changelog_18_3_0">18.3.0</a></h2><ul><li><a href="classbn_1_1sprite__text__generator.html#a89347835d0aa55d7ba213c7f66497f32" class="m-doc">bn::<wbr />sprite_text_generator::<wbr />generate_top_left</a> and <a href="classbn_1_1sprite__text__generator.html#a6aec8204e94548644cb8de1da209b66b" class="m-doc">bn::<wbr />sprite_text_generator::<wbr />generate_top_left_optional</a> added.</li><li><a href="classbn_1_1sprite__text__generator.html" class="m-doc">bn::<wbr />sprite_text_generator</a> allows to setup the mosaic, the blending, the visibility and the camera of the output sprites.</li><li><a href="classbn_1_1sprite__builder.html#a92266e78942acadf1fdae1af53eb77bf" class="m-doc">bn::<wbr />sprite_builder::<wbr />release_affine_mat</a>, <a href="classbn_1_1sprite__builder.html#adfa72da0e8034636c25bb40d31a3b4db" class="m-doc">bn::<wbr />sprite_builder::<wbr />release_camera</a>, <a href="classbn_1_1regular__bg__builder.html#a327aef3ecbaf95d9dbb22460792ae628" class="m-doc">bn::<wbr />regular_bg_builder::<wbr />release_camera</a> and <a href="classbn_1_1affine__bg__builder.html#acf6b5cd7c4fc2894320c26c9187485a2" class="m-doc">bn::<wbr />affine_bg_builder::<wbr />release_camera</a> fixed.</li><li><a href="classbn_1_1sprite__builder.html" class="m-doc">bn::<wbr />sprite_builder</a>, <a href="classbn_1_1regular__bg__builder.html" class="m-doc">bn::<wbr />regular_bg_builder</a> and <a href="classbn_1_1affine__bg__builder.html" class="m-doc">bn::<wbr />affine_bg_builder</a> documentation improved.</li></ul></section><section id="changelog_18_2_1"><h2><a href="#changelog_18_2_1">18.2.1</a></h2><ul><li><a href="classbn_1_1forward__list.html" class="m-doc">bn::<wbr />forward_list</a> and <a href="classbn_1_1intrusive__forward__list.html" class="m-doc">bn::<wbr />intrusive_forward_list</a> forward iterator requirements fixed.</li><li><a href="classbn_1_1list.html" class="m-doc">bn::<wbr />list</a>, <a href="classbn_1_1intrusive__list.html" class="m-doc">bn::<wbr />intrusive_list</a>, <a href="classbn_1_1unordered__map.html" class="m-doc">bn::<wbr />unordered_map</a> and <a href="classbn_1_1unordered__set.html" class="m-doc">bn::<wbr />unordered_set</a> bidirectional iterator requirements fixed.</li><li><a href="classbn_1_1deque.html" class="m-doc">bn::<wbr />deque</a> iterator random access requirements fixed.</li><li><a href="classbn_1_1deque.html" class="m-doc">bn::<wbr />deque</a>, <a href="classbn_1_1list.html" class="m-doc">bn::<wbr />list</a>, <a href="classbn_1_1intrusive__list.html" class="m-doc">bn::<wbr />intrusive_list</a>, <a href="classbn_1_1forward__list.html" class="m-doc">bn::<wbr />forward_list</a>, <a href="classbn_1_1intrusive__forward__list.html" class="m-doc">bn::<wbr />intrusive_forward_list</a>, <a href="classbn_1_1unordered__map.html" class="m-doc">bn::<wbr />unordered_map</a> and <a href="classbn_1_1unordered__set.html" class="m-doc">bn::<wbr />unordered_set</a> iterator type aliases fixed.</li></ul></section><section id="changelog_18_2_0"><h2><a href="#changelog_18_2_0">18.2.0</a></h2><ul><li><a href="classbn_1_1regular__bg__ptr.html" class="m-doc">bn::<wbr />regular_bg_ptr</a>, <a href="classbn_1_1regular__bg__builder.html" class="m-doc">bn::<wbr />regular_bg_builder</a>, <a href="classbn_1_1affine__bg__ptr.html" class="m-doc">bn::<wbr />affine_bg_ptr</a>, <a href="classbn_1_1affine__bg__builder.html" class="m-doc">bn::<wbr />affine_bg_builder</a>, <a href="classbn_1_1affine__bg__mat__attributes.html" class="m-doc">bn::<wbr />affine_bg_mat_attributes</a>, <a href="classbn_1_1sprite__ptr.html" class="m-doc">bn::<wbr />sprite_ptr</a> and <a href="classbn_1_1sprite__builder.html" class="m-doc">bn::<wbr />sprite_builder</a> support top-left coordinates for their position.</li><li><a href="classbn_1_1regular__bg__top__left__move__to__action.html" class="m-doc">bn::<wbr />regular_bg_top_left_move_to_action</a>, <a href="classbn_1_1regular__bg__top__left__move__loop__action.html" class="m-doc">bn::<wbr />regular_bg_top_left_move_loop_action</a>, <a href="classbn_1_1regular__bg__top__left__move__toggle__action.html" class="m-doc">bn::<wbr />regular_bg_top_left_move_toggle_action</a>, <a href="classbn_1_1affine__bg__top__left__move__to__action.html" class="m-doc">bn::<wbr />affine_bg_top_left_move_to_action</a>, <a href="classbn_1_1affine__bg__top__left__move__loop__action.html" class="m-doc">bn::<wbr />affine_bg_top_left_move_loop_action</a>, <a href="classbn_1_1affine__bg__top__left__move__toggle__action.html" class="m-doc">bn::<wbr />affine_bg_top_left_move_toggle_action</a>, <a href="classbn_1_1sprite__top__left__move__to__action.html" class="m-doc">bn::<wbr />sprite_top_left_move_to_action</a>, <a href="classbn_1_1sprite__top__left__move__loop__action.html" class="m-doc">bn::<wbr />sprite_top_left_move_loop_action</a> and <a href="classbn_1_1sprite__top__left__move__toggle__action.html" class="m-doc">bn::<wbr />sprite_top_left_move_toggle_action</a> added.</li><li><a href="group__math.html#ga3f84312f5751bc707185733a2726ed2a" class="m-doc">bn::<wbr />safe_degrees_angle</a>, <a href="group__math.html#ga93b9aa2a691c91b85e6b2434fbd0c389" class="m-doc">bn::<wbr />degrees_lut_sin_safe</a>, <a href="group__math.html#ga7b086f6f733857c2baae8b3ed45df802" class="m-doc">bn::<wbr />degrees_lut_cos_safe</a> and <a href="group__math.html#ga3a6996bf0ed5a86b07c2ebfe13b5d6f4" class="m-doc">bn::<wbr />degrees_lut_sin_and_cos_safe</a> added.</li><li><a href="classbn_1_1affine__mat__attributes.html#a20b0a00e393aeab2ac6baa5094b57c4a" class="m-doc">bn::<wbr />affine_mat_attributes::<wbr />set_rotation_angle_safe</a>, <a href="classbn_1_1affine__bg__builder.html#a737bc2acbfaff8356ebde7e5989f977b" class="m-doc">bn::<wbr />affine_bg_builder::<wbr />set_rotation_angle_safe</a>, <a href="classbn_1_1affine__bg__mat__attributes.html#a4bfac42bcace24ba03611f94b8127a02" class="m-doc">bn::<wbr />affine_bg_mat_attributes::<wbr />set_rotation_angle_safe</a>, <a href="classbn_1_1affine__bg__ptr.html#acaf8f31bfe870b0a0fabfac906ba6394" class="m-doc">bn::<wbr />affine_bg_ptr::<wbr />set_rotation_angle_safe</a>, <a href="classbn_1_1sprite__affine__mat__ptr.html#af4d06250f22d62ad11dba6b4c91252bf" class="m-doc">bn::<wbr />sprite_affine_mat_ptr::<wbr />set_rotation_angle_safe</a>, <a href="classbn_1_1sprite__builder.html#a6954fd12d394c99b8200f4e568ed4e5c" class="m-doc">bn::<wbr />sprite_builder::<wbr />set_rotation_angle_safe</a> and <a href="classbn_1_1sprite__ptr.html#a6b75655fa1eae2f0484c951dd9a344eb" class="m-doc">bn::<wbr />sprite_ptr::<wbr />set_rotation_angle_safe</a> added.</li><li>Position in <code>create</code> methods is now optional.</li><li><a href="classbn_1_1intrusive__list.html" class="m-doc">bn::<wbr />intrusive_list</a> and <a href="classbn_1_1intrusive__forward__list.html" class="m-doc">bn::<wbr />intrusive_forward_list</a> iterator constructors are now public.</li><li>Real time clock (RTC) string added.</li><li>SRAM string with link-time optimization fixed.</li><li><a href="faq.html#faq_backgrounds_top_left" class="m-doc">Why are background coordinates relative to the center of the screen instead of the top-left corner?</a> and <a href="faq.html#faq_sprites_top_left" class="m-doc">Why are sprite coordinates relative to the center of the screen instead of the top-left corner?</a> questions added to the <a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page.</li><li><a href="faq.html#faq_flash_carts_sram" class="m-doc">Why my game runs fine on emulators but doesn&#x27;t work on a real GBA with a flash cart?</a> question improved.</li></ul></section><section id="changelog_18_1_0"><h2><a href="#changelog_18_1_0">18.1.0</a></h2><ul><li><a href="namespacebn_1_1blending.html#a157a4e086bfdd58dbca2af452f49f877" class="m-doc">bn::<wbr />blending::<wbr />set_transparency_and_intensity_alpha</a> added.</li><li><a href="classbn_1_1timer.html#ae58721f51d5c4befe04fc2a81b6cd057" class="m-doc">bn::<wbr />timer::<wbr />elapsed_ticks_with_restart</a> added.</li><li><a href="namespacebn_1_1timers.html#a2efa9d955b19d220a62ef748227c2e92" class="m-doc">bn::<wbr />timers::<wbr />ticks_per_second</a> added.</li><li><a href="group__timer.html#ga7f11ddf2b8707135f098d9ebf1fa6628" class="m-doc">BN_<wbr />CFG_<wbr />TIMER_<wbr />FREQUENCY</a> added.</li><li><a href="classbn_1_1timer.html" class="m-doc">bn::<wbr />timer</a> overflow fixed.</li><li><a href="group__math.html#ga5efbddb9091a5e4cff2d8ac4c97992f4" class="m-doc">bn::<wbr />degrees_lut_sin</a>, <a href="group__math.html#ga22a19da000f91da1b7ec4bd18e5206fb" class="m-doc">bn::<wbr />degrees_lut_cos</a> and <a href="group__math.html#ga71e8b700ef0c4e7e8eb264d78defe65c" class="m-doc">bn::<wbr />degrees_lut_sin_and_cos</a> optimized.</li><li>Color palettes, sprite tiles and audio management ROM usage reduced.</li><li><code>timer</code> example added.</li><li><a href="faq.html#faq_sprites_item_from_ptr" class="m-doc">Is there a way to get the bn::<wbr />sprite_item used to create a bn::<wbr />sprite_ptr?</a> question added to the <a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page.</li><li><a href="https://github.com/chrislewisdev/gba-pseudo-3d">GBA pseudo-3D demo</a> added to <code>README.md</code>.</li></ul></section><section id="changelog_18_0_1"><h2><a href="#changelog_18_0_1">18.0.1</a></h2><p>Tools no longer crash on Windows with more than 60 logical CPU cores.</p></section><section id="changelog_18_0_0"><h2><a href="#changelog_18_0_0">18.0.0</a></h2><ul><li>Language standard updated to C++23.</li><li>Old <a href="namespacebn_1_1hdma.html#a1aca5fcdb0e61bbce351c908851f7bb4" class="m-doc">bn::<wbr />hdma::<wbr />start</a> and <a href="namespacebn_1_1hdma.html#ae75aaa5c4ee26a0a18ca2261b3d98bd9" class="m-doc">bn::<wbr />hdma::<wbr />high_priority_start</a> API deprecated.</li><li><code>BN_UNREACHABLE</code> deprecated.</li><li>Construction of <a href="classbn_1_1string.html" class="m-doc">bn::<wbr />string</a> and <a href="classbn_1_1string__view.html" class="m-doc">bn::<wbr />string_view</a> from <code>nullptr</code> is disallowed (thanks C++23).</li><li><a href="classbn_1_1istring.html#aa2fb23e7f4e4fc2e792e27d567dbf780" class="m-doc">bn::<wbr />string::<wbr />starts_with</a>, <a href="classbn_1_1istring.html#a114cd1e10c839e6bf2460e4d8f9a417b" class="m-doc">bn::<wbr />string::<wbr />ends_with</a>, <a href="classbn_1_1string__view.html#a9797b65a989658f28b1514f01702883c" class="m-doc">bn::<wbr />string_view::<wbr />starts_with</a> and <a href="classbn_1_1string__view.html#acd08ee3cb310d33358e8cefb44dd8931" class="m-doc">bn::<wbr />string_view::<wbr />ends_with</a> a <code>nullptr</code> char array is disallowed.</li><li><a href="classbn_1_1unique__ptr.html" class="m-doc">bn::<wbr />unique_ptr</a> is now <code>constexpr</code>.</li><li><a href="classbn_1_1bitset.html" class="m-doc">bn::<wbr />bitset</a> and <a href="classbn_1_1string.html" class="m-doc">bn::<wbr />string</a> aren&#x27;t <code>constexpr</code> anymore (it didn&#x27;t work before).</li><li>More overloads added to <a href="classbn_1_1string.html" class="m-doc">bn::<wbr />string</a> construction, assignment, <a href="classbn_1_1istring.html#af3262a16be45902456e6f16735d3d002" class="m-doc">bn::<wbr />string::<wbr />assign</a> and <a href="classbn_1_1istring.html#acf829f22785da094aaaf95a77c53ec27" class="m-doc">bn::<wbr />string::<wbr />append</a>.</li><li><a href="classbn_1_1istring.html#a13bfc99cabaec290bae78941a2fb36d5" class="m-doc">bn::<wbr />string::<wbr />find</a> and <a href="classbn_1_1string__view.html#a823b7265e4c2e2608bb6bf42e8732869" class="m-doc">bn::<wbr />string_view::<wbr />find</a> added.</li><li><a href="classbn_1_1istring.html#a0f84a4a7969bea294de405ad6598b1a7" class="m-doc">bn::<wbr />string::<wbr />contains</a> and <a href="classbn_1_1string__view.html#ac81545eec695b26d539c0f42f75683aa" class="m-doc">bn::<wbr />string_view::<wbr />contains</a> added.</li><li><a href="classbn_1_1string.html#a4509cece781f2838bf750717ec01ff37" class="m-doc">bn::<wbr />string::<wbr />substr</a> added.</li><li><a href="classbn_1_1string__view.html#acd08ee3cb310d33358e8cefb44dd8931" class="m-doc">bn::<wbr />string_view::<wbr />ends_with</a> a char array added.</li><li><code>nullptr</code> constructor and method overloads added to <a href="classbn_1_1unique__ptr.html" class="m-doc">bn::<wbr />unique_ptr</a>.</li><li>Non-throwing <code>new</code> and <code>delete</code> supported.</li><li><a href="classbn_1_1string__view.html#ad9db4341b78e3a3e5c5e4979e71cf9ea" class="m-doc">bn::<wbr />string_view::<wbr />remove_prefix</a> and <a href="classbn_1_1string__view.html#a75e434480d95e870a895c3ad34526917" class="m-doc">bn::<wbr />string_view::<wbr />remove_suffix</a> assert fixed.</li><li><code>bn::is_constant_evaluated</code> replaced with <code>consteval</code>.</li><li>Unnecessary <code>operator!=</code> implementations removed.</li><li><a href="classbn_1_1regular__bg__builder.html#abe19cf1c064c64ff457fe0ac131d9346" class="m-doc">bn::<wbr />regular_bg_builder::<wbr />release_map</a>, <a href="classbn_1_1affine__bg__builder.html#adebf30341e31ab0c33ee4d4ccf64433b" class="m-doc">bn::<wbr />affine_bg_builder::<wbr />release_map</a>, <a href="classbn_1_1sprite__builder.html#ae342e890cb01d622e7fddd5b3f436587" class="m-doc">bn::<wbr />sprite_builder::<wbr />release_tiles</a> and <a href="classbn_1_1sprite__builder.html#ab3851b8f905bf33bd5d81905b7f21511" class="m-doc">bn::<wbr />sprite_builder::<wbr />release_palette</a> ROM usage reduced.</li><li><a href="classbn_1_1deque.html" class="m-doc">bn::<wbr />deque</a> iterators order operators optimized.</li></ul></section><section id="changelog_17_9_0"><h2><a href="#changelog_17_9_0">17.9.0</a></h2><ul><li><a href="namespacebn_1_1hdma.html#a1aca5fcdb0e61bbce351c908851f7bb4" class="m-doc">bn::<wbr />hdma::<wbr />start</a> and <a href="namespacebn_1_1hdma.html#ae75aaa5c4ee26a0a18ca2261b3d98bd9" class="m-doc">bn::<wbr />hdma::<wbr />high_priority_start</a> API improved.</li><li>Some assert messages improved.</li><li>Missing header includes added.</li><li><code>hdma_palette</code> example added.</li><li>Dead links updated.</li><li>New games made with Butano added to <code>README.md</code>.</li></ul></section><section id="changelog_17_8_1"><h2><a href="#changelog_17_8_1">17.8.1</a></h2><ul><li><a href="classbn_1_1ideque.html#a56096c773094e4f8c5925d629ce71799" class="m-doc">bn::<wbr />deque::<wbr />erase</a> fixed (thanks <a href="https://github.com/copyrat90">copyrat90</a>!).</li><li><a href="faq.html#faq_sell_money" class="m-doc">Would I be able to sell my game made with Butano for money?</a> question improved.</li></ul></section><section id="changelog_17_8_0"><h2><a href="#changelog_17_8_0">17.8.0</a></h2><ul><li>H-Blank effects stop fixed.</li><li><code>random</code> example added.</li><li><code>log</code> example improved.</li><li><a href="nocashgba_exception.html" class="m-doc">No$gba exception setup guide</a> added.</li><li><a href="faq.html#faq_code_crash" class="m-doc">How can I know what code makes my game crash?</a> question added to the <a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page.</li><li><a href="group__log.html#gad8da3032261c4e87005284f0c70d97cc" class="m-doc">BN_<wbr />LOG_<wbr />BACKEND_<wbr />MGBA</a> also works with <a href="https://github.com/SourMesen/Mesen2">Mesen</a>.</li><li><a href="namespacebn_1_1sram.html" class="m-doc">bn::<wbr />sram</a> documentation improved.</li><li><a href="import.html#import_regular_bg" class="m-doc">Regular backgrounds</a> and <a href="import.html#import_affine_bg" class="m-doc">Affine backgrounds</a> import guides improved.</li></ul></section><section id="changelog_17_7_0"><h2><a href="#changelog_17_7_0">17.7.0</a></h2><ul><li><a href="classbn_1_1bg__palette__ptr.html#a761edff260736a1b16d0b1c4edbddeaa" class="m-doc">bn::<wbr />bg_palette_ptr::<wbr />set_color</a> and <a href="classbn_1_1sprite__palette__ptr.html#a9fc00d0ef61e752c1794fa0e7fabe4d2" class="m-doc">bn::<wbr />sprite_palette_ptr::<wbr />set_color</a> added.</li><li>Empty <a href="classbn_1_1utf8__characters__map.html" class="m-doc">bn::<wbr />utf8_characters_map</a> and <a href="classbn_1_1utf8__characters__map__ref.html" class="m-doc">bn::<wbr />utf8_characters_map_ref</a> allowed.</li></ul></section><section id="changelog_17_6_0"><h2><a href="#changelog_17_6_0">17.6.0</a></h2><ul><li><a href="classbn_1_1bg__palette__ptr.html#a6a56c5e4f58122a25b5d222825c04d19" class="m-doc">bn::<wbr />bg_palette_ptr::<wbr />rotate_range_start</a>, <a href="classbn_1_1bg__palette__ptr.html#a98e4c6ef1489c9af05bd6b695c7d7b7a" class="m-doc">bn::<wbr />bg_palette_ptr::<wbr />rotate_range_size</a> and <a href="classbn_1_1bg__palette__ptr.html#aaec9baba67c2119b614c3237e319efe6" class="m-doc">bn::<wbr />bg_palette_ptr::<wbr />set_rotate_range</a> added.</li><li><a href="classbn_1_1sprite__palette__ptr.html#a22f1c3ac67d3a0965d378d1fd8e7f7b4" class="m-doc">bn::<wbr />sprite_palette_ptr::<wbr />rotate_range_start</a>, <a href="classbn_1_1sprite__palette__ptr.html#a753ff0aea32049f7a796cbb844316b39" class="m-doc">bn::<wbr />sprite_palette_ptr::<wbr />rotate_range_size</a> and <a href="classbn_1_1sprite__palette__ptr.html#a8df7213e406cd9f1371314f950c50526" class="m-doc">bn::<wbr />sprite_palette_ptr::<wbr />set_rotate_range</a> added.</li><li><a href="classbn_1_1fixed__t.html#ab1a836f2529dc5b641dbd4e43e9d2e53" class="m-doc">bn::<wbr />fixed::<wbr />modulo</a> added.</li><li><a href="namespacebn_1_1memory.html#a144d0588fd6a9cfa84c60223b880fe1c" class="m-doc">bn::<wbr />memory::<wbr />fast_ewram</a> added.</li><li><a href="classbn_1_1random.html#a237dad71c95a3fad7d21bac4e53152e2" class="m-doc">bn::<wbr />random::<wbr />get_unbiased_int</a>, <a href="classbn_1_1random.html#a1f7dc025dbd1f86f15d203b5dfdf41de" class="m-doc">bn::<wbr />random::<wbr />get_unbiased_fixed</a>, <a href="classbn_1_1seed__random.html#a20dde8c0b131d81110bce609fd5c6a3a" class="m-doc">bn::<wbr />seed_random::<wbr />get_unbiased_int</a> and <a href="classbn_1_1seed__random.html#aee5a93c82ff480f7b936df4e06fdde72" class="m-doc">bn::<wbr />seed_random::<wbr />get_unbiased_fixed</a> added (thanks <a href="https://github.com/alope107">alope107</a>!).</li><li>H-Blank effects management optimized.</li><li><code>BN_EWRAM_WAIT_STATE_1</code> crash after boot documented.</li><li>Slow EWRAM test added.</li><li>IWRAM vs EWRAM stack tests added to the <code>profiler</code> coroutine test.</li><li>Slow game pak test improved.</li><li>GCC 14 false build warnings in Butano Fighter fixed.</li></ul></section><section id="changelog_17_5_0"><h2><a href="#changelog_17_5_0">17.5.0</a></h2><ul><li><a href="namespacebn_1_1memory.html#a4dbb607c9f3145e6206f164db03bedb6" class="m-doc">bn::<wbr />memory::<wbr />dma_enabled</a> and <a href="namespacebn_1_1memory.html#a3b6126d1d69c0a79e92243b1651cd025" class="m-doc">bn::<wbr />memory::<wbr />set_dma_enabled</a> added.</li><li><a href="namespacebn.html#a0de0484a51e353c5b48db21590f4dfc9" class="m-doc">bn::<wbr />fixed</a> explicit conversion operators added.</li><li>Custom C++ flags can be specified in the project&#x27;s <code>Makefile</code>.</li><li>All logging functions and methods can be called with logging disabled.</li><li>Current <a href="https://github.com/rodri042/gba-link-connection">gba-link-connection</a> implementation has been moved to a private namespace to allow using other implementations.</li><li>Spelling mistakes corrected.</li><li>Background z order documentation improved.</li><li><a href="https://github.com/Fralacticus/gba-wav-to-s3m-converter">GBA Wav to S3m Converter</a> added to the <a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page.</li></ul></section><section id="changelog_17_4_0"><h2><a href="#changelog_17_4_0">17.4.0</a></h2><ul><li><a href="namespacebn_1_1blending.html#ac01129c3e46bb6fa64ecb2427a14d45b" class="m-doc">bn::<wbr />blending::<wbr />set_black_fade_color</a> and <a href="namespacebn_1_1blending.html#a50a458b8088f4caa45843ec3f2b679d1" class="m-doc">bn::<wbr />blending::<wbr />set_white_fade_color</a> added.</li><li><a href="namespacebn.html#a0de0484a51e353c5b48db21590f4dfc9" class="m-doc">bn::<wbr />fixed</a> <code>friend</code> operators allow different levels of precision.</li><li><a href="classbn_1_1list.html" class="m-doc">bn::<wbr />list</a> and <a href="classbn_1_1forward__list.html" class="m-doc">bn::<wbr />forward_list</a> unnecessary asserts removed.</li><li>VRAM related error messages shortened.</li><li><code>profiler</code> coroutine test improved.</li><li>BIOS calls can be disabled in the <code>profiler</code> test.</li><li><a href="faq.html#faq_standard" class="m-doc">Why can&#x27;t I use some standard functions and classes?</a> question added to the <a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page.</li><li><a href="faq.html#faq_memory_types" class="m-doc">Why do I run out of memory so often?</a> question improved.</li><li><a href="https://neofidstudios.itch.io/demons-of-asteborg-dx">Demons of Asteborg DX</a> added to <code>README.md</code>.</li></ul></section><section id="changelog_17_3_0"><h2><a href="#changelog_17_3_0">17.3.0</a></h2><ul><li><a href="namespacebn_1_1core.html#ac399daa5263756c037b34f14729e8a7a" class="m-doc">bn::<wbr />core::<wbr />current_cpu_ticks</a>, <a href="namespacebn_1_1core.html#a836c1d35b22654721c3af7e05b397217" class="m-doc">bn::<wbr />core::<wbr />last_cpu_ticks</a> and <a href="namespacebn_1_1core.html#a15afc3dfa39d1ad455e0e4bfd6fecac3" class="m-doc">bn::<wbr />core::<wbr />last_vblank_ticks</a> added.</li><li>Import tool now allows to exclude Huffman when choosing the best compression for images. See the <a href="import.html#import_image" class="m-doc">Images</a> import guide to learn how to exclude it.</li><li>LZ77 decompression optimized (thanks Lorenzooone!).</li><li><a href="namespacebn_1_1core.html#aed64f380e43b831c5b6b4602a508f811" class="m-doc">bn::<wbr />core::<wbr />current_cpu_usage</a> and <a href="namespacebn_1_1core.html#aace6487154c238af8d207e0e400f6fcf" class="m-doc">bn::<wbr />core::<wbr />last_vblank_usage</a> with skip frames fixed.</li><li>Coroutine added to the <code>profiler</code> test.</li></ul></section><section id="changelog_17_2_0"><h2><a href="#changelog_17_2_0">17.2.0</a></h2><ul><li><a href="namespacebn_1_1core.html#a70441922960e810dd149a7849c7bd047" class="m-doc">bn::<wbr />core::<wbr />log_stacktrace</a> added. Check the <code>log</code> example to see how to log the current stack trace.</li><li><a href="classbn_1_1isprite__animate__action.html#a92dd832cca49ba097eaa42cec3e18fb8" class="m-doc">bn::<wbr />isprite_animate_action::<wbr />next_change_updates</a>, <a href="classbn_1_1isprite__cached__animate__action.html#a51a02b9354f08b881e963ae72c3c060e" class="m-doc">bn::<wbr />isprite_cached_animate_action::<wbr />next_change_updates</a>, <a href="classbn_1_1iregular__bg__animate__action.html#ac3581f14e3d67866cea4f5043f254fe0" class="m-doc">bn::<wbr />iregular_bg_animate_action::<wbr />next_change_updates</a>, <a href="classbn_1_1iregular__bg__cached__animate__action.html#a0e6e1c898435d0207bc675674a742100" class="m-doc">bn::<wbr />iregular_bg_cached_animate_action::<wbr />next_change_updates</a>, <a href="classbn_1_1iaffine__bg__animate__action.html#a27f0a5731cfa5617f771ce2114eaf190" class="m-doc">bn::<wbr />iaffine_bg_animate_action::<wbr />next_change_updates</a> and <a href="classbn_1_1iaffine__bg__cached__animate__action.html#a2d6a8743a6978c4c5d28d05766e7e861" class="m-doc">bn::<wbr />iaffine_bg_cached_animate_action::<wbr />next_change_updates</a> added.</li><li><code>bn::pair</code> is now a <code>std::pair</code> alias.</li><li><a href="https://www.coranac.com/man/tonclib">Tonclib</a> ASM ROM usage reduced.</li><li><code>profiler</code> example simplified.</li><li>Compression algorithms added to the <code>profiler</code> test.</li><li><a href="faq.html#faq_stack_trace" class="m-doc">What function or method call is the source of an error message?</a> question added to the <a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page.</li><li><a href="faq.html#faq_color_8bpp_palette_change" class="m-doc">Why changing the color palette of an 8BPP sprite or background doesn&#x27;t work?</a> question added to the <a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page.</li><li><a href="faq.html#faq_sprites_hidden" class="m-doc">Does hiding a sprite make it count towards the total number of allowed sprites?</a> and <a href="faq.html#faq_backgrounds_hidden" class="m-doc">Does hiding a background make it count towards the total number of allowed backgrounds?</a> questions added to the <a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page.</li><li><a href="getting_started.html" class="m-doc">Getting started</a> guide improved.</li><li><a href="faq.html#faq_memory_types" class="m-doc">Why do I run out of memory so often?</a> question improved.</li><li><a href="https://github.com/nikku4211/wavefront2varooom3d">Wavefront To Varooom 3D</a> added to <code>README.md</code>.</li></ul></section><section id="changelog_17_1_1"><h2><a href="#changelog_17_1_1">17.1.1</a></h2><p><a href="classbn_1_1unique__ptr.html" class="m-doc">bn::<wbr />unique_ptr</a> move fixed.</p></section><section id="changelog_17_1_0"><h2><a href="#changelog_17_1_0">17.1.0</a></h2><ul><li>Affine big maps canvas size can be specified by the user: <a href="group__bg__map.html#gaf0efc6369fee6e1306d928c8f5cd3652" class="m-doc">bn::<wbr />affine_bg_big_map_canvas_size</a>, <a href="namespacebn_1_1bg__maps.html#af510d06ccb66171ee9e14e65aaf157cb" class="m-doc">bn::<wbr />bg_maps::<wbr />new_affine_big_map_canvas_size</a>, <a href="namespacebn_1_1bg__maps.html#aac3facb35107afec3b2fc82450394f93" class="m-doc">bn::<wbr />bg_maps::<wbr />set_new_affine_big_map_canvas_size</a> and <a href="classbn_1_1affine__bg__map__ptr.html#af475956e82faee432ec86233a5624fe9" class="m-doc">bn::<wbr />affine_bg_map_ptr::<wbr />big_canvas_size</a> added.</li><li>Regular big maps canvas height increased.</li><li>Force at least one update before sleeping in <a href="namespacebn_1_1core.html#a32ee163633d553f5ce2fda884539f0f6" class="m-doc">bn::<wbr />core::<wbr />sleep</a>.</li><li><a href="classbn_1_1span.html#a80a618677f68c0154d0fa997cdcb93b7" class="m-doc">bn::<wbr />span::<wbr />size_bytes</a> implicit conversion warning fixed.</li><li><a href="https://wonderful.asie.pl">Wonderful Toolchain</a> binary files build time reduced.</li><li>Scale can be changed in the <code>world_map</code> example.</li></ul></section><section id="changelog_17_0_0"><h2><a href="#changelog_17_0_0">17.0.0</a></h2><ul><li>Regular and affine backgrounds allow to specify if they are part of the blending bottom layer or not. See the <code>blending</code> example to learn how to do it.</li><li><a href="namespacebn_1_1sprites.html#a6f5ca2e5aa945a21c5947a7b38980ddb" class="m-doc">bn::<wbr />sprites::<wbr />blending_bottom_enabled</a> and <a href="namespacebn_1_1sprites.html#a46ecf38b4abe33485ff8f233db81525e" class="m-doc">bn::<wbr />sprites::<wbr />set_blending_bottom_enabled</a> added.</li><li><a href="namespacebn_1_1backdrop.html" class="m-doc">bn::<wbr />backdrop</a> functions and actions added.</li><li><a href="classbn_1_1backdrop__color__hbe__ptr.html" class="m-doc">bn::<wbr />backdrop_color_hbe_ptr</a> added.</li><li><a href="classbn_1_1fixed__point__t.html" class="m-doc">bn::<wbr />fixed_point_t</a>, <a href="classbn_1_1fixed__size__t.html" class="m-doc">bn::<wbr />fixed_size_t</a>, <a href="classbn_1_1fixed__rect__t.html" class="m-doc">bn::<wbr />fixed_rect_t</a> and <a href="classbn_1_1top__left__fixed__rect__t.html" class="m-doc">bn::<wbr />top_left_fixed_rect_t</a> added.</li><li>Collision methods added to <a href="classbn_1_1rect.html" class="m-doc">bn::<wbr />rect</a>, <a href="namespacebn.html#ab92161c3965138dd8983d58725b13647" class="m-doc">bn::<wbr />fixed_rect</a>, <a href="classbn_1_1top__left__rect.html" class="m-doc">bn::<wbr />top_left_rect</a> and <a href="namespacebn.html#a43d7e5ae449250da706894c59f3eb197" class="m-doc">bn::<wbr />top_left_fixed_rect</a>.</li><li><code>__FILE_NAME__</code> macro is no longer required.</li><li>Toolchain detection fixed.</li><li>Build time reduced.</li></ul></section><section id="changelog_16_6_0"><h2><a href="#changelog_16_6_0">16.6.0</a></h2><ul><li><a href="namespacebn_1_1sprites.html#a41591c3f0218eb8f804ecdadd1709479" class="m-doc">bn::<wbr />sprites::<wbr />visible</a> and <a href="namespacebn_1_1sprites.html#a9a7b97a5e81ee51653e5b8b27d6cc01c" class="m-doc">bn::<wbr />sprites::<wbr />set_visible</a> added.</li><li><a href="namespacebn_1_1sprites.html" class="m-doc">bn::<wbr />sprites</a> actions added.</li><li>Initial transparent color of the backgrounds can be specified in <a href="namespacebn_1_1core.html#ae44eeedf2d7cadbe8d8d6990e209f46d" class="m-doc">bn::<wbr />core::<wbr />init</a>.</li><li><a href="classbn_1_1date.html" class="m-doc">bn::<wbr />date</a> year range not longer limited to [0..99].</li><li><a href="namespacebn_1_1color__effect.html#a6840bad203f09f032a80be0c9d06c44c" class="m-doc">bn::<wbr />color_effect::<wbr />grayscale</a>, <a href="namespacebn_1_1color__effect.html#accda48ec4faad48cba35663421facd5f" class="m-doc">bn::<wbr />color_effect::<wbr />blend</a> and <a href="namespacebn_1_1color__effect.html#a8d43575a9b0f173520b82005863f6038" class="m-doc">bn::<wbr />color_effect::<wbr />fade</a> require 4-byte aligned color references with an even number of colors.</li><li>Uncompressed backgrounds commit CPU usage reduced.</li><li>Memory copy speed tests added to the <code>profiler</code> example.</li></ul></section><section id="changelog_16_5_0"><h2><a href="#changelog_16_5_0">16.5.0</a></h2><ul><li>Big maps allow wrapping (they can now be moved beyond their boundaries).</li><li>Stack trace logging on error messages can be enabled with the <code>STACKTRACE</code> makefile variable.</li><li>Stack trace demangle can be enabled with <a href="group__assert.html#ga486ff2d0af04c8caa5d31685b07f2200" class="m-doc">BN_<wbr />CFG_<wbr />ASSERT_<wbr />STACKTRACE_<wbr />DEMANGLE</a>.</li><li><a href="namespacebn_1_1memory.html#afb7e1472565d5c2e09f44bb604f7d171" class="m-doc">bn::<wbr />memory::<wbr />used_rom</a> added.</li><li>Import tool can now generate palettes for regular and affine background tiles. See the <a href="import.html#import_regular_bg_tiles" class="m-doc">Regular background tiles</a> and the <a href="import.html#import_affine_bg_tiles" class="m-doc">Affine background tiles</a> import guides to learn how to generate them.</li><li><code>GRAPHICS</code>, <code>AUDIO</code> and <code>DMGAUDIO</code> makefile variables accept file and folder paths.</li><li><code>bn::audio::dmg_sync_enabled</code> and <code>bn::audio::set_dmg_sync_enabled</code> removed as <a href="https://github.com/AntonioND/gbt-player/issues/20">they don&#x27;t work properly</a>.</li><li><a href="classbn_1_1time.html#af4435ec3ae26d94fa43f0f2c152ff6a1" class="m-doc">bn::<wbr />time::<wbr />current</a> 12-hour mode support.</li><li><a href="https://github.com/felixjones/agbabi">agbabi</a> updated to 2.1.6.</li><li>Old documentation header restored.</li><li><code>dynamic_regular_bg</code> example shows how to deal with multiple palette ids.</li><li>Tiles offset disabled in <code>dynamic_regular_bg</code> and <code>dynamic_affine_bg</code> examples.</li></ul></section><section id="changelog_16_4_0"><h2><a href="#changelog_16_4_0">16.4.0</a></h2><ul><li><a href="https://wonderful.asie.pl">Wonderful Toolchain</a> experimental support! See the <a href="getting_started_wt.html" class="m-doc">Getting started with Wonderful Toolchain</a> guide to learn how to build Butano games with it.</li><li>Real time clock (RTC) support thanks to <a href="https://github.com/felixjones/agbabi">agbabi</a>. See <a href="classbn_1_1date.html" class="m-doc">bn::<wbr />date</a>, <a href="classbn_1_1time.html" class="m-doc">bn::<wbr />time</a> and the <code>date_time</code> example to learn how to deal with the RTC.</li><li><a href="namespacebn_1_1core.html#a601c5cc430d5772238e879e97ef214b3" class="m-doc">bn::<wbr />core::<wbr />hard_reset</a> added.</li><li><a href="classbn_1_1isprite__animate__action.html#ad3864441605b63a39cec3094b14971fe" class="m-doc">bn::<wbr />isprite_animate_action::<wbr />current_graphics_index</a> and <a href="classbn_1_1isprite__cached__animate__action.html#a357975a98f91c293f8ef84feecbdcd5d" class="m-doc">bn::<wbr />isprite_cached_animate_action::<wbr />current_tiles</a> added.</li><li><a href="https://github.com/felixjones/agbabi">agbabi</a> memory routines IWRAM usage reduced.</li><li>Rumble management CPU usage reduced.</li><li><code>memcmp</code> optimized.</li><li>Hardware access ROM usage reduced.</li><li>Error messages crash fixed.</li><li>Error messages with HDMA enabled have been fixed too.</li></ul></section><section id="changelog_16_3_0"><h2><a href="#changelog_16_3_0">16.3.0</a></h2><ul><li><a href="namespacebn_1_1music.html#a89013df63f8d3529f36dfa0f2c284fbf" class="m-doc">bn::<wbr />music::<wbr />stop</a>, <a href="namespacebn_1_1dmg__music.html#ae5e0befde85bfba8318c1f6fc26bc5bc" class="m-doc">bn::<wbr />dmg_music::<wbr />stop</a>, <a href="classbn_1_1sound__handle.html#aee258acb9bbb8f7e7f746587ad1b6e74" class="m-doc">bn::<wbr />sound_handle::<wbr />stop</a> and <a href="classbn_1_1sound__handle.html#af6f7cdfab556d1c0150c92346f20af44" class="m-doc">bn::<wbr />sound_handle::<wbr />release</a> can be called without triggering an assert if the music/sound in question is not playing.</li><li>Target <code>*.gba</code> file is rebuilt when the target <code>*.elf</code> file is not present.</li><li>Sprite affine mats management CPU usage reduced.</li><li>Sound handles management CPU usage reduced.</li><li>Backgrounds management CPU usage reduced.</li><li><a href="classbn_1_1iunordered__map.html#aa448632bf3e2c465be5e7de1fa25fee3" class="m-doc">bn::<wbr />unordered_map::<wbr />erase</a> and <a href="classbn_1_1iunordered__set.html#a921e7b67cda1843ee11f7a805ab3c0e8" class="m-doc">bn::<wbr />unordered_set::<wbr />erase</a> fixed.</li></ul></section><section id="changelog_16_2_0"><h2><a href="#changelog_16_2_0">16.2.0</a></h2><ul><li><a href="namespacebn_1_1dmg__music.html#a8d5a4dfe8160354fc7ffa4575f83916c" class="m-doc">bn::<wbr />dmg_music::<wbr />master_volume</a> and <a href="namespacebn_1_1dmg__music.html#a55a100af3c116115bc03a2f57370eefd" class="m-doc">bn::<wbr />dmg_music::<wbr />set_master_volume</a> added.</li><li><a href="namespacebn_1_1color__effect.html#accda48ec4faad48cba35663421facd5f" class="m-doc">bn::<wbr />color_effect::<wbr />blend</a> added.</li><li>Sprite affine mats management CPU usage reduced.</li><li><a href="namespacebn_1_1jingle.html#af93a8ceed4e4fbc000ec97f101d41a1a" class="m-doc">bn::<wbr />jingle::<wbr />play</a> link error fixed.</li></ul></section><section id="changelog_16_1_0"><h2><a href="#changelog_16_1_0">16.1.0</a></h2><ul><li>Sprite affine mats management CPU usage reduced.</li><li>Music ending detection fixed.</li></ul></section><section id="changelog_16_0_0"><h2><a href="#changelog_16_0_0">16.0.0</a></h2><ul><li><a href="classbn_1_1sound__handle.html" class="m-doc">bn::<wbr />sound_handle</a> and sound handle actions added. See the <code>audio</code> example to learn how to stop, release and setup sound effects with them.</li><li><a href="namespacebn_1_1jingle.html" class="m-doc">bn::<wbr />jingle</a> and jingle actions added.</li><li>Audio commands generation optimized.</li><li>Music ending detection fixed.</li><li>Create new tiles methods deprecated.</li></ul></section><section id="changelog_15_9_0"><h2><a href="#changelog_15_9_0">15.9.0</a></h2><ul><li>Same maps with different tiles or palettes supported.</li><li>Some clangd and Clang-Tidy warnings fixed.</li></ul></section><section id="changelog_15_8_2"><h2><a href="#changelog_15_8_2">15.8.2</a></h2><ul><li><a href="classbn_1_1iunordered__map.html#ae3f1a11955171f209ce905f2f922264e" class="m-doc">bn::<wbr />unordered_map::<wbr />clear</a> and <a href="classbn_1_1iunordered__set.html#aa0e296b59827a8632cf0ef6544045b6b" class="m-doc">bn::<wbr />unordered_set::<wbr />clear</a> fixed.</li><li>Backgrounds and color palettes modules documentation fixed.</li></ul></section><section id="changelog_15_8_1"><h2><a href="#changelog_15_8_1">15.8.1</a></h2><p><a href="classbn_1_1ivector.html#abb895de13147d1f9c76caaddb0ec9201" class="m-doc">bn::<wbr />vector::<wbr />assign</a> fixed.</p></section><section id="changelog_15_8_0"><h2><a href="#changelog_15_8_0">15.8.0</a></h2><ul><li>Color-related H-Blank effects cleanup fixed.</li><li><a href="getting_started.html" class="m-doc">Getting started</a> page improved.</li><li><a href="faq.html#faq_memory_types" class="m-doc">Why do I run out of memory so often?</a> question improved.</li></ul></section><section id="changelog_15_7_1"><h2><a href="#changelog_15_7_1">15.7.1</a></h2><p>Python 2 support restored.</p></section><section id="changelog_15_7_0"><h2><a href="#changelog_15_7_0">15.7.0</a></h2><ul><li><a href="namespacebn_1_1blending.html#add696a7d99f37f54057c71d00d6351b8" class="m-doc">bn::<wbr />blending::<wbr />restore</a> added.</li><li><a href="classbn_1_1window.html#ac655862386ce7a9abeeb5fa69d794c01" class="m-doc">bn::<wbr />window::<wbr />restore</a> added.</li></ul></section><section id="changelog_15_6_0"><h2><a href="#changelog_15_6_0">15.6.0</a></h2><ul><li><a href="namespacebn_1_1display.html#a94577f740921c6ce3a41d4ae5ffc74c6" class="m-doc">bn::<wbr />display::<wbr />size</a> added.</li><li>Standard abort implemented.</li><li>Color-related H-Blank effects update fixed.</li></ul></section><section id="changelog_15_5_0"><h2><a href="#changelog_15_5_0">15.5.0</a></h2><ul><li><a href="namespacebn_1_1assert.html#a5116cda8d3fb767efe1fca5a35fbe519" class="m-doc">bn::<wbr />assert::<wbr />callback</a> and <a href="namespacebn_1_1assert.html#ad201a65520eeda64f357ae9510215a7b" class="m-doc">bn::<wbr />assert::<wbr />set_callback</a> added.</li><li><code>BN_DATA_EWRAM_BSS</code> added.</li><li><a href="namespacebn_1_1memory.html#af04b62be1d94b6ce43002d439d596da3" class="m-doc">bn::<wbr />memory::<wbr />used_static_ewram</a> fixed.</li><li>Butano subsystems ROM usage reduced.</li><li><a href="https://www.coranac.com/man/tonclib">Tonclib</a> tiled surface functions added.</li><li>Unused <a href="https://www.coranac.com/man/tonclib">Tonclib</a> functions and data removed.</li></ul></section><section id="changelog_15_4_1"><h2><a href="#changelog_15_4_1">15.4.1</a></h2><p><a href="namespacebn_1_1core.html#adab0aa2898c9c07fe9e8cfb75ab820ec" class="m-doc">bn::<wbr />core::<wbr />reset</a> race condition fixed.</p></section><section id="changelog_15_4_0"><h2><a href="#changelog_15_4_0">15.4.0</a></h2><ul><li><a href="namespacebn_1_1dmg__music.html" class="m-doc">bn::<wbr />dmg_music</a> now supports VGM audio files with <code>*.vgm</code> extension thanks to <a href="https://github.com/copyrat90/gbadev-ja-test">VGM player</a>. See the <a href="import.html#import_dmg_music" class="m-doc">DMG music</a> import guide and the <code>dmg_audio</code> example to learn how to import and play it.</li><li>Import tool now allows to specify whether regular and affine backgrounds are big or not. See the <a href="import.html#import_regular_bg" class="m-doc">Regular backgrounds</a> and the <a href="import.html#import_affine_bg" class="m-doc">Affine backgrounds</a> import guides to learn how to specify it.</li><li><a href="classbn_1_1regular__bg__map__item.html#a81a9f46dd598e94d334a198bce4bf833" class="m-doc">bn::<wbr />regular_bg_map_item::<wbr />flat_layout</a> added.</li><li><a href="faq.html#faq_sprites_multiple_8bpp" class="m-doc">Why everything looks weird when I show two or more sprites with more than 16 colors?</a> and <a href="faq.html#faq_backgrounds_multiple_8bpp" class="m-doc">Why everything looks weird when I show two or more backgrounds with more than 16 colors?</a> questions added to the <a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page.</li><li><a href="faq.html#faq_images_invalid_header_size" class="m-doc">Why do I get an &quot;invalid header size&quot; error when I try to import a *.bmp file?</a> question added to the <a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page.</li><li><a href="import.html#import_image" class="m-doc">Images</a> import guide improved.</li></ul></section><section id="changelog_15_3_2"><h2><a href="#changelog_15_3_2">15.3.2</a></h2><p>BG blocks commit fixed.</p></section><section id="changelog_15_3_1"><h2><a href="#changelog_15_3_1">15.3.1</a></h2><p>Slow game pak detection fixed (again).</p></section><section id="changelog_15_3_0"><h2><a href="#changelog_15_3_0">15.3.0</a></h2><ul><li><a href="classbn_1_1top__left__rect.html" class="m-doc">bn::<wbr />top_left_rect</a> and <a href="namespacebn.html#a43d7e5ae449250da706894c59f3eb197" class="m-doc">bn::<wbr />top_left_fixed_rect</a> added.</li><li><a href="namespacebn_1_1core.html#ae44eeedf2d7cadbe8d8d6990e209f46d" class="m-doc">bn::<wbr />core::<wbr />init</a> waits for V-Blank before initializing all Butano subsystems.</li><li>Slow game pak detection fixed.</li><li><a href="classbn_1_1rect.html" class="m-doc">bn::<wbr />rect</a> issues with odd dimensions documented.</li></ul></section><section id="changelog_15_2_0"><h2><a href="#changelog_15_2_0">15.2.0</a></h2><ul><li><a href="classbn_1_1seed__random.html" class="m-doc">bn::<wbr />seed_random</a> added.</li><li>Standard assert implemented.</li><li>Thread-safe initialization of local statics disabled.</li><li>Static destructors fixed.</li><li>Maps commit optimized by more than 35% in some cases.</li><li>Palette search optimized by more than 25% in some cases.</li><li>Big maps commit optimized.</li><li>Display setup commit optimized.</li><li>BG blocks and sprite tiles managers ROM usage reduced.</li><li><code>map_collision</code> example added.</li></ul></section><section id="changelog_15_1_0"><h2><a href="#changelog_15_1_0">15.1.0</a></h2><ul><li><code>memcmp</code> optimized.</li><li>Link flags fixed.</li></ul></section><section id="changelog_15_0_0"><h2><a href="#changelog_15_0_0">15.0.0</a></h2><ul><li><a href="https://sourceware.org/newlib">newlib</a> dependency removed.</li><li>Standard system libraries linking can be specified in the project&#x27;s <code>Makefile</code>.</li><li><a href="classbn_1_1utf8__character.html#a13244a40f6945aee8ebf51a614fe5f6b" class="m-doc">bn::<wbr />utf8_character::<wbr />size</a> for ASCII characters fixed.</li><li>More questions added to <a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page.</li><li><a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page improved.</li></ul></section><section id="changelog_14_1_0"><h2><a href="#changelog_14_1_0">14.1.0</a></h2><ul><li><a href="classbn_1_1regular__bg__map__item.html#a7b5149c3af1e579ecb6700d852c81105" class="m-doc">bn::<wbr />regular_bg_map_item::<wbr />cells_count</a> and <a href="classbn_1_1affine__bg__map__item.html#a4e79979ce4f74b0113fa51477f970e84" class="m-doc">bn::<wbr />affine_bg_map_item::<wbr />cells_count</a> added.</li><li><a href="classbn_1_1regular__bg__map__item.html#a554fa705ff535bc66a1423b9bbfc70b6" class="m-doc">bn::<wbr />regular_bg_map_item::<wbr />decompress</a> and <a href="classbn_1_1affine__bg__map__item.html#a2f02264fda87cdf1a52f8263073222ab" class="m-doc">bn::<wbr />affine_bg_map_item::<wbr />decompress</a> fixed.</li></ul></section><section id="changelog_14_0_0"><h2><a href="#changelog_14_0_0">14.0.0</a></h2><ul><li><a href="classbn_1_1regular__bg__map__item.html" class="m-doc">bn::<wbr />regular_bg_map_item</a> and <a href="classbn_1_1affine__bg__map__item.html" class="m-doc">bn::<wbr />affine_bg_map_item</a> can reference multiple maps per item.</li><li>Regular and affine backgrounds import support multiple maps per image thanks to the optional <code>height</code> field.</li><li><a href="classbn_1_1regular__bg__animate__action.html" class="m-doc">bn::<wbr />regular_bg_animate_action</a> and <a href="classbn_1_1regular__bg__cached__animate__action.html" class="m-doc">bn::<wbr />regular_bg_cached_animate_action</a> added.</li><li><a href="classbn_1_1affine__bg__animate__action.html" class="m-doc">bn::<wbr />affine_bg_animate_action</a> and <a href="classbn_1_1affine__bg__cached__animate__action.html" class="m-doc">bn::<wbr />affine_bg_cached_animate_action</a> added.</li><li><a href="classbn_1_1pool.html" class="m-doc">bn::<wbr />pool</a> of trivially destructible types can be destroyed without being empty.</li><li><a href="classbn_1_1list.html" class="m-doc">bn::<wbr />list</a> and <a href="classbn_1_1forward__list.html" class="m-doc">bn::<wbr />forward_list</a> destructors fixed and optimized for trivially destructible types.</li><li>Deprecated methods removed.</li></ul></section><section id="changelog_13_18_0"><h2><a href="#changelog_13_18_0">13.18.0</a></h2><ul><li>Sprites and sprite tiles <code>height</code> field is now optional.</li><li>Standard containers ROM usage reduced.</li><li><a href="classbn_1_1iunordered__map.html#ae3f1a11955171f209ce905f2f922264e" class="m-doc">bn::<wbr />unordered_map::<wbr />clear</a> and <a href="classbn_1_1iunordered__set.html#aa0e296b59827a8632cf0ef6544045b6b" class="m-doc">bn::<wbr />unordered_set::<wbr />clear</a> optimized.</li><li><a href="classbn_1_1best__fit__allocator.html" class="m-doc">bn::<wbr />best_fit_allocator</a> missing header files included.</li><li><a href="group__log.html#gaae7d5d026c78486b342474a038913935" class="m-doc">BN_<wbr />CFG_<wbr />LOG_<wbr />BACKEND</a> documentation fixed.</li></ul></section><section id="changelog_13_17_0"><h2><a href="#changelog_13_17_0">13.17.0</a></h2><ul><li><a href="namespacebn_1_1blending.html#a260282df55e9d15b0cdbf8a9dcc5a9c5" class="m-doc">bn::<wbr />blending::<wbr />set_transparency_alpha</a> and <a href="namespacebn_1_1blending.html#a61dcff5f9f66c2ff63c311664ab73f07" class="m-doc">bn::<wbr />blending::<wbr />set_intensity_alpha</a> fixed.</li><li>Tools multiprocessing pools are now closed properly.</li><li>More questions added to <a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page.</li></ul></section><section id="changelog_13_16_1"><h2><a href="#changelog_13_16_1">13.16.1</a></h2><p><a href="classbn_1_1ibitset.html" class="m-doc">bn::<wbr />ibitset</a> AND operator fixed.</p></section><section id="changelog_13_16_0"><h2><a href="#changelog_13_16_0">13.16.0</a></h2><ul><li><a href="namespacebn_1_1sound.html#a5cdfb622f60c87e84d583a9698d64215" class="m-doc">bn::<wbr />sound::<wbr />master_volume</a> and <a href="namespacebn_1_1sound.html#a59eb46cdaba7a41d663c0a61450265cc" class="m-doc">bn::<wbr />sound::<wbr />set_master_volume</a> added.</li><li>Sound master volume actions added.</li><li><a href="classbn_1_1sprite__shape__size.html" class="m-doc">bn::<wbr />sprite_shape_size</a> constructor from width and height added.</li><li>Maximum number of sprites per scanline increased.</li><li><a href="classbn_1_1timer.html#a5e01b02d196c9f5011618b8ee3e0052c" class="m-doc">bn::<wbr />timer::<wbr />elapsed_ticks</a> accuracy improved.</li><li>Display management optimized.</li><li><a href="classbn_1_1ibitset.html" class="m-doc">bn::<wbr />ibitset</a> equality operators fixed.</li><li><a href="group__log.html#gad8da3032261c4e87005284f0c70d97cc" class="m-doc">BN_<wbr />LOG_<wbr />BACKEND_<wbr />MGBA</a> also works with <a href="https://github.com/nba-emu/NanoBoyAdvance">NanoBoyAdvance</a>.</li><li><a href="getting_started.html" class="m-doc">Getting started</a> page improved.</li><li>More questions added to <a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page.</li></ul></section><section id="changelog_13_15_0"><h2><a href="#changelog_13_15_0">13.15.0</a></h2><ul><li>Brightness, contrast and intensity color effects optimized.</li><li><a href="classbn_1_1random.html" class="m-doc">bn::<wbr />random</a> internal variables are <code>protected</code> to allow child classes to access them.</li><li><code>compile_commands.json</code> generation support.</li></ul></section><section id="changelog_13_14_0"><h2><a href="#changelog_13_14_0">13.14.0</a></h2><ul><li>Hash support for <a href="classbn_1_1type__id__t.html" class="m-doc">bn::<wbr />type_id_t</a> added.</li><li>Custom build base rules updated.</li><li>Keypad logger startup fixed.</li><li>Redundant move in <a href="classbn_1_1affine__bg__mat__attributes__hbe__ptr.html#ab021c129ea015814e4e03fc41b6250e0" class="m-doc">bn::<wbr />affine_bg_mat_attributes_hbe_ptr::<wbr />create_optional</a> removed.</li><li>Parallel link-time optimization documentation updated.</li></ul></section><section id="changelog_13_13_0"><h2><a href="#changelog_13_13_0">13.13.0</a></h2><ul><li><a href="classbn_1_1optional.html#ad7ec0bf9b6b3dc35aceba64a484eff55" class="m-doc">bn::<wbr />optional::<wbr />value_type</a> added.</li><li>H-Blank effects management optimized (ROM and EWRAM usage reduced).</li><li><a href="classbn_1_1affine__bg__blending__toggle__action.html" class="m-doc">bn::<wbr />affine_bg_blending_toggle_action</a> base class inheritance fixed.</li><li><a href="classbn_1_1regular__bg__map__cell__info.html" class="m-doc">bn::<wbr />regular_bg_map_cell_info</a> size reduced.</li><li><a href="classbn_1_1optional.html" class="m-doc">bn::<wbr />optional</a> build time reduced.</li></ul></section><section id="changelog_13_12_1"><h2><a href="#changelog_13_12_1">13.12.1</a></h2><p><a href="https://www.coranac.com/man/tonclib">Tonclib</a> linking error fixed.</p></section><section id="changelog_13_12_0"><h2><a href="#changelog_13_12_0">13.12.0</a></h2><ul><li><a href="classbn_1_1sprite__ptr.html#a427b5646be4bae647ebc113e097a3bc5" class="m-doc">bn::<wbr />sprite_ptr::<wbr />set_affine_mat</a> optimized.</li><li><a href="classbn_1_1intrusive__forward__list.html#ae58bbf6e9683445d94299aa407134b53" class="m-doc">bn::<wbr />intrusive_forward_list::<wbr />front</a> fixed.</li><li>Flickering in <code>world_map</code> example fixed.</li></ul></section><section id="changelog_13_11_0"><h2><a href="#changelog_13_11_0">13.11.0</a></h2><ul><li><a href="https://github.com/felixjones/agbabi">agbabi</a> updated to 2.1.3.</li><li><a href="namespacebn_1_1core.html#aed64f380e43b831c5b6b4602a508f811" class="m-doc">bn::<wbr />core::<wbr />current_cpu_usage</a>, <a href="namespacebn_1_1core.html#a5c36ceb40cf617f8ffa442bbf15126c1" class="m-doc">bn::<wbr />core::<wbr />last_cpu_usage</a> and <a href="namespacebn_1_1core.html#aace6487154c238af8d207e0e400f6fcf" class="m-doc">bn::<wbr />core::<wbr />last_vblank_usage</a> accuracy improved.</li><li><a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page improved.</li></ul></section><section id="changelog_13_10_1"><h2><a href="#changelog_13_10_1">13.10.1</a></h2><p><code>memset</code> undefined references with link-time optimization fixed.</p></section><section id="changelog_13_10_0"><h2><a href="#changelog_13_10_0">13.10.0</a></h2><ul><li><code>memset</code> moved to IWRAM.</li><li>Backdrop fade blending fixed.</li></ul></section><section id="changelog_13_9_0"><h2><a href="#changelog_13_9_0">13.9.0</a></h2><ul><li><a href="group__math.html#ga150d06193cada537b2978edd85fd25c6" class="m-doc">bn::<wbr />unsafe_sqrt</a> added.</li><li><code>memset</code> fixed.</li><li><a href="https://foopod.itch.io/sips">Sips</a> added to <code>README.md</code>.</li><li><a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page improved.</li></ul></section><section id="changelog_13_8_1"><h2><a href="#changelog_13_8_1">13.8.1</a></h2><p><a href="classbn_1_1any.html" class="m-doc">bn::<wbr />any</a> management with types that can&#x27;t be copied, moved or swapped fixed.</p></section><section id="changelog_13_8_0"><h2><a href="#changelog_13_8_0">13.8.0</a></h2><ul><li><a href="classbn_1_1any.html" class="m-doc">bn::<wbr />any</a> construction and assignment from references to non constant values fixed.</li><li><a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page improved.</li></ul></section><section id="changelog_13_7_0"><h2><a href="#changelog_13_7_0">13.7.0</a></h2><ul><li><a href="classbn_1_1igeneric__pool.html#a99ac6c7e9616c2a8ec8865ce5ebfe5a0" class="m-doc">bn::<wbr />igeneric_pool::<wbr />contains</a> added.</li><li><a href="classbn_1_1igeneric__pool.html#a643bbff99805caa5c488efef5abfb162" class="m-doc">bn::<wbr />generic_pool::<wbr />create</a> invalid element size fixed.</li></ul></section><section id="changelog_13_6_0"><h2><a href="#changelog_13_6_0">13.6.0</a></h2><ul><li><a href="namespacebn_1_1memory.html#a6b84181b5e8e1eca783b61f1b0c782ea" class="m-doc">bn::<wbr />memory::<wbr />copy</a> and <a href="namespacebn_1_1memory.html#a035feaf6d2f14313185724e54f168424" class="m-doc">bn::<wbr />memory::<wbr />clear</a> optimized.</li><li><a href="group__functional.html#ga02391ae0afbdff410755ef7eaaacb896" class="m-doc">bn::<wbr />array_hash</a> fixed.</li></ul></section><section id="changelog_13_5_0"><h2><a href="#changelog_13_5_0">13.5.0</a></h2><ul><li><a href="namespacebn_1_1music.html#a4a985e910cf30af7177f9f421de54d6c" class="m-doc">bn::<wbr />music::<wbr />tempo</a> and <a href="namespacebn_1_1music.html#a36037b1c0fba5b516210689aea0dd0c6" class="m-doc">bn::<wbr />music::<wbr />set_tempo</a> added.</li><li><a href="namespacebn_1_1music.html#a3cd46c84871d3a203856d5028d94a405" class="m-doc">bn::<wbr />music::<wbr />pitch</a> and <a href="namespacebn_1_1music.html#a09cfd61f423921d597d75394f4af817f" class="m-doc">bn::<wbr />music::<wbr />set_pitch</a> added.</li><li><a href="classbn_1_1music__tempo__to__action.html" class="m-doc">bn::<wbr />music_tempo_to_action</a>, <a href="classbn_1_1music__tempo__loop__action.html" class="m-doc">bn::<wbr />music_tempo_loop_action</a> and <a href="classbn_1_1music__tempo__toggle__action.html" class="m-doc">bn::<wbr />music_tempo_toggle_action</a> added.</li><li><a href="classbn_1_1music__pitch__to__action.html" class="m-doc">bn::<wbr />music_pitch_to_action</a>, <a href="classbn_1_1music__pitch__loop__action.html" class="m-doc">bn::<wbr />music_pitch_loop_action</a> and <a href="classbn_1_1music__pitch__toggle__action.html" class="m-doc">bn::<wbr />music_pitch_toggle_action</a> added.</li><li>DMG music import options added. See the <a href="import.html#import_dmg_music" class="m-doc">DMG music</a> import guide to learn how to specify them.</li><li>Empty <a href="classbn_1_1array.html" class="m-doc">bn::<wbr />array</a> allowed.</li><li><a href="structbn_1_1hash.html" class="m-doc">bn::<wbr />hash</a> enums support.</li><li>Sprites management IWRAM usage reduced.</li><li><a href="group__functional.html#ga02391ae0afbdff410755ef7eaaacb896" class="m-doc">bn::<wbr />array_hash</a> optimized.</li></ul></section><section id="changelog_13_4_0"><h2><a href="#changelog_13_4_0">13.4.0</a></h2><ul><li><a href="group__assert.html#gabb95f8ef0ef2b1a7293b19613678f332" class="m-doc">BN_<wbr />BASIC_<wbr />ASSERT</a> added.</li><li>Repeated color palettes reduction can be disabled when importing a regular background. See the <a href="import.html#import_regular_bg" class="m-doc">Regular backgrounds</a> import guide to learn how to disable it.</li><li>Unaligned byte <code>memset</code> fixed.</li><li>Asserts without diagnostic information ROM usage reduced.</li><li>Input tiles in <code>dynamic_regular_bg</code> and <code>dynamic_affine_bg</code> examples are imported without using a map.</li><li><a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page improved.</li></ul></section><section id="changelog_13_3_1"><h2><a href="#changelog_13_3_1">13.3.1</a></h2><p><a href="namespacebn.html#aadd288f5d1d9aded03db9671d8816714" class="m-doc">bn::<wbr />erase</a> and <a href="namespacebn.html#a780e01453e57c6d9180b1da0c5c41c13" class="m-doc">bn::<wbr />erase_if</a> fixed.</p></section><section id="changelog_13_3_0"><h2><a href="#changelog_13_3_0">13.3.0</a></h2><ul><li><a href="group__other.html#ga18012c35ef2ae80d6c102554e2150da3" class="m-doc">BN_<wbr />CONST</a> added.</li><li><a href="group__math.html#gaf87b16f04d5c22fcb6dac8cdc42cdc17" class="m-doc">bn::<wbr />sqrt</a>, <a href="group__math.html#ga78f693fa4296294dd21c68557e916aa3" class="m-doc">bn::<wbr />atan2</a> and <a href="group__math.html#ga4f44ebe732a5726299387598c5cd1caa" class="m-doc">bn::<wbr />degrees_atan2</a> marked as <a href="group__other.html#ga18012c35ef2ae80d6c102554e2150da3" class="m-doc">BN_<wbr />CONST</a>.</li><li>Linking with too many object files fixed.</li></ul></section><section id="changelog_13_2_0"><h2><a href="#changelog_13_2_0">13.2.0</a></h2><ul><li><a href="namespacebn_1_1sram.html#ad5124755a238581342bcd2c8f468f7f4" class="m-doc">bn::<wbr />sram::<wbr />read_span</a>, <a href="namespacebn_1_1sram.html#acbb4e3623a9a357364262a475fc4a35c" class="m-doc">bn::<wbr />sram::<wbr />read_span_offset</a>, <a href="namespacebn_1_1sram.html#a77e5e0265d5a06c478184e591f5fd656" class="m-doc">bn::<wbr />sram::<wbr />write_span</a> and <a href="namespacebn_1_1sram.html#a0f646d96f8b399b5b8aa32f2f7aea208" class="m-doc">bn::<wbr />sram::<wbr />write_span_offset</a> added.</li><li><a href="namespacebn_1_1core.html#a98c2b2065c2694d96b695a6076df8506" class="m-doc">bn::<wbr />core::<wbr />last_missed_frames</a> added.</li><li><a href="namespacebn_1_1core.html#a4f662445a2e8ff6d2b370cb0a27b2ff0" class="m-doc">bn::<wbr />core::<wbr />set_skip_frames</a> accuracy improved.</li><li>Wait for V-Blank improved.</li><li>Disabled asserts indicate the compiler that if the condition is false the code is unreachable.</li><li><a href="classbn_1_1blending__transparency__attributes.html" class="m-doc">bn::<wbr />blending_transparency_attributes</a> missing header inclusions fixed.</li><li>SRAM is cleared when formatting in the <code>sram</code> example.</li></ul></section><section id="changelog_13_1_1"><h2><a href="#changelog_13_1_1">13.1.1</a></h2><p>Recovery of deleted background maps fixed.</p></section><section id="changelog_13_1_0"><h2><a href="#changelog_13_1_0">13.1.0</a></h2><ul><li><a href="classbn_1_1isprite__animate__action.html" class="m-doc">bn::<wbr />isprite_animate_action</a> and <a href="classbn_1_1isprite__cached__animate__action.html" class="m-doc">bn::<wbr />isprite_cached_animate_action</a> added.</li><li><a href="classbn_1_1ilist.html#acd7df9bf5771bcb8e13cc807587fd194" class="m-doc">bn::<wbr />list::<wbr />remove</a>, <a href="classbn_1_1ilist.html#a717bb90715ee1e53df86b212ce50a763" class="m-doc">bn::<wbr />list::<wbr />remove_if</a>, <a href="classbn_1_1iforward__list.html#af34e98ee7189e6133e3ddb18c95367c5" class="m-doc">bn::<wbr />forward_list::<wbr />remove</a>, <a href="classbn_1_1iforward__list.html#aa05f1242abcfc0d70783b39a4224e72a" class="m-doc">bn::<wbr />forward_list::<wbr />remove_if</a>, <a href="classbn_1_1intrusive__list.html#a6d8be44c440c67ff4585487e72eefb5c" class="m-doc">bn::<wbr />intrusive_list::<wbr />remove</a>, <a href="classbn_1_1intrusive__list.html#ad907f7c9ede1cd8409cf901bd238355e" class="m-doc">bn::<wbr />intrusive_list::<wbr />remove_if</a>, <a href="classbn_1_1intrusive__forward__list.html#a7fadd00b956b99e8bde15779f3626986" class="m-doc">bn::<wbr />intrusive_forward_list::<wbr />remove</a> and <a href="classbn_1_1intrusive__forward__list.html#a6581c7f0e672418c75d02bf87b300fca" class="m-doc">bn::<wbr />intrusive_forward_list::<wbr />remove_if</a> added.</li><li>Hash support for <a href="classbn_1_1istring.html" class="m-doc">bn::<wbr />istring</a> and <a href="classbn_1_1string.html" class="m-doc">bn::<wbr />string</a> added.</li><li><a href="classbn_1_1best__fit__allocator.html" class="m-doc">bn::<wbr />best_fit_allocator</a> (used by the heap manager) CPU usage reduced.</li><li><a href="classbn_1_1best__fit__allocator.html" class="m-doc">bn::<wbr />best_fit_allocator</a> sanity check can be enabled with <a href="group__allocator.html#ga303646dae46f4f41de377f760fb93ee6" class="m-doc">BN_<wbr />CFG_<wbr />BEST_<wbr />FIT_<wbr />ALLOCATOR_<wbr />SANITY_<wbr />CHECK_<wbr />ENABLED</a>.</li><li><a href="classbn_1_1best__fit__allocator.html#a135bd5c9d1c7643b6a87fa2d5f00ef85" class="m-doc">bn::<wbr />best_fit_allocator::<wbr />free</a> calls can be validated with <a href="group__allocator.html#ga2eaa132c745a806b1d797ea667520620" class="m-doc">BN_<wbr />CFG_<wbr />BEST_<wbr />FIT_<wbr />ALLOCATOR_<wbr />FREE_<wbr />CHECK_<wbr />ENABLED</a>.</li><li><a href="https://www.coranac.com/man/tonclib">Tonclib</a> unused components removed (EWRAM and ROM usage reduced).</li><li><a href="classbn_1_1best__fit__allocator.html#aa0c96d738a6ff2b0f642b886eda00b2d" class="m-doc">bn::<wbr />best_fit_allocator::<wbr />realloc</a> can shrink allocations.</li><li>BPP mode can be specified when importing sprites and sprite palettes. See the <a href="import.html#import_image" class="m-doc">Images</a> import guide to learn how to specify it.</li><li>Colors count can be specified when importing sprites, sprite tiles, sprite palettes, regular backgrounds and affine backgrounds. See the <a href="import.html#import_image" class="m-doc">Images</a> import guide to learn how to specify them.</li><li>BMP files are validated when importing background tiles.</li><li>Flipped tiles reduction disabled in <code>dynamic_regular_bg</code> example.</li><li><a href="https://forum.gbadev.net">gbadev forums</a> added to <code>README.md</code>.</li></ul></section><section id="changelog_13_0_0"><h2><a href="#changelog_13_0_0">13.0.0</a></h2><ul><li><strong>(Breaking change)</strong> <a href="classbn_1_1best__fit__allocator.html" class="m-doc">bn::<wbr />best_fit_allocator</a> (used by the heap manager) supports unlimited allocations.</li><li><a href="classbn_1_1best__fit__allocator.html#a4ff7fae927cebb586c7d2f3a25fead28" class="m-doc">bn::<wbr />best_fit_allocator::<wbr />log_status</a> and <a href="namespacebn_1_1memory.html#a826ad0e9711c3fd551485b52d7a0876f" class="m-doc">bn::<wbr />memory::<wbr />log_alloc_ewram_status</a> added.</li><li>New games made with Butano added to <code>README.md</code>.</li></ul></section><section id="changelog_12_5_0"><h2><a href="#changelog_12_5_0">12.5.0</a></h2><p><a href="group__assert.html#ga4b7d0bdea5d644b055bcb3c64d310cf9" class="m-doc">BN_<wbr />CFG_<wbr />ASSERT_<wbr />SHOW_<wbr />DIAGNOSTIC</a> added.</p></section><section id="changelog_12_4_0"><h2><a href="#changelog_12_4_0">12.4.0</a></h2><ul><li>SRAM magic string fixed.</li><li><code>BN_CODE_IWRAM</code> macro can be used for thumb code too.</li><li>Destructors of classes with <code>_ptr</code> suffix ROM usage reduced.</li><li>4BPP regular backgrounds quantization improved.</li><li>Some error messages improved.</li><li><a href="import.html#import_image" class="m-doc">Import images guide</a> explains why <a href="https://github.com/gb-archive/usenti">Usenti</a> is recommended over other image editors.</li></ul></section><section id="changelog_12_3_0"><h2><a href="#changelog_12_3_0">12.3.0</a></h2><ul><li><a href="classbn_1_1sprite__text__generator.html" class="m-doc">bn::<wbr />sprite_text_generator</a> variable width fonts rendering fixed and optimized.</li><li>Sprite shape and size update ROM usage reduced.</li><li>Some Cppcheck warnings removed.</li></ul></section><section id="changelog_12_2_0"><h2><a href="#changelog_12_2_0">12.2.0</a></h2><ul><li>Automatic sprite double size detection fixed.</li><li>Sprite tiles management optimized (EWRAM and CPU usage reduced).</li><li>Background tiles and maps management optimized (EWRAM and CPU usage reduced).</li><li>Color palettes management CPU usage reduced.</li><li>Sprites and sprite affine mats management CPU usage reduced.</li><li>Backgrounds management CPU usage reduced.</li><li>Cameras management CPU usage reduced.</li></ul></section><section id="changelog_12_1_0"><h2><a href="#changelog_12_1_0">12.1.0</a></h2><ul><li>Sprite tiles delayed commit fixed.</li><li>V-Blank interrupt management optimized (EWRAM and CPU usage reduced).</li><li>Missed link messages frequency reduced.</li><li><a href="classbn_1_1timer.html#a5e01b02d196c9f5011618b8ee3e0052c" class="m-doc">bn::<wbr />timer::<wbr />elapsed_ticks</a> optimized.</li></ul></section><section id="changelog_12_0_0"><h2><a href="#changelog_12_0_0">12.0.0</a></h2><ul><li><strong>(Breaking change)</strong> <a href="group__memory.html#ga3e6c93fe7f9ba3d81b89c2c87ccdee74" class="m-doc">bn::<wbr />aligned</a> fixed.</li><li>Color effects optimized.</li></ul></section><section id="changelog_11_0_1"><h2><a href="#changelog_11_0_1">11.0.1</a></h2><p><a href="classbn_1_1istring.html#aa2fb23e7f4e4fc2e792e27d567dbf780" class="m-doc">bn::<wbr />string::<wbr />starts_with</a> and <a href="classbn_1_1string__view.html#a9797b65a989658f28b1514f01702883c" class="m-doc">bn::<wbr />string_view::<wbr />starts_with</a> fixed.</p></section><section id="changelog_11_0_0"><h2><a href="#changelog_11_0_0">11.0.0</a></h2><p>Huffman images compression support (make sure to update <a href="https://devkitpro.org">devkitARM</a> before using it).</p></section><section id="changelog_10_7_0"><h2><a href="#changelog_10_7_0">10.7.0</a></h2><ul><li><a href="classbn_1_1unique__ptr.html" class="m-doc">bn::<wbr />unique_ptr</a> move constructor, move assignment operator and <a href="classbn_1_1unique__ptr.html#a51077d0279075ab1058b6a5ced7eaf43" class="m-doc">bn::<wbr />unique_ptr::<wbr />reset</a> allow to manage pointers and deleters with different type.</li><li><a href="classbn_1_1unique__ptr.html" class="m-doc">bn::<wbr />unique_ptr</a> documentation improved.</li><li>More questions added to <a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page.</li><li><a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page improved.</li></ul></section><section id="changelog_10_6_1"><h2><a href="#changelog_10_6_1">10.6.1</a></h2><p><a href="classbn_1_1bitset.html" class="m-doc">bn::<wbr />bitset</a> AND, OR and XOR operators fixed.</p></section><section id="changelog_10_6_0"><h2><a href="#changelog_10_6_0">10.6.0</a></h2><ul><li><a href="classbn_1_1isprite__animate__action.html#a4d5e7c43785bc1906621de70cc046445" class="m-doc">bn::<wbr />sprite_animate_action::<wbr />set_wait_updates</a> and <a href="classbn_1_1isprite__cached__animate__action.html#a14a44cc06c83dc4cc5472475265c3f9b" class="m-doc">bn::<wbr />sprite_cached_animate_action::<wbr />set_wait_updates</a> added.</li><li><a href="classbn_1_1isprite__animate__action.html#a36c52284302726735f91060b429759b9" class="m-doc">bn::<wbr />sprite_animate_action::<wbr />reset</a> and <a href="classbn_1_1isprite__cached__animate__action.html#a5a37e4e46b28ec42ed9fd79617805ed4" class="m-doc">bn::<wbr />sprite_cached_animate_action::<wbr />reset</a> added.</li><li>Backgrounds management optimized (EWRAM and CPU usage reduced).</li><li>Sprites, sprite tiles, palettes and HDMA commit CPU usage reduced.</li><li>Missed link messages frequency reduced.</li><li><a href="https://mgba.io">mGBA</a> logging CPU usage reduced.</li><li>Keypad logging EWRAM and maximum CPU usage reduced.</li><li>CPU usage profiler entries removed.</li><li>Some assert messages improved.</li></ul></section><section id="changelog_10_5_0"><h2><a href="#changelog_10_5_0">10.5.0</a></h2><ul><li><a href="namespacebn_1_1core.html#a3e81181a01b2ef99485eeee4d0ad8112" class="m-doc">bn::<wbr />core::<wbr />vblank_callback</a> and <a href="namespacebn_1_1core.html#a3545d1f13cf70791ee4b68ed4065398a" class="m-doc">bn::<wbr />core::<wbr />set_vblank_callback</a> added.</li><li><a href="classbn_1_1random.html#af576b431d31a4cf348dfddf17b5b6526" class="m-doc">bn::<wbr />random::<wbr />update</a> added.</li><li>H-Blank effects input data validation fixed.</li></ul></section><section id="changelog_10_4_0"><h2><a href="#changelog_10_4_0">10.4.0</a></h2><ul><li>Avoid data decompression in V-Blank if possible.</li><li>Audio updates can no longer be interrupted.</li></ul></section><section id="changelog_10_3_0"><h2><a href="#changelog_10_3_0">10.3.0</a></h2><ul><li><a href="namespacebn_1_1bg__tiles.html#adde429970403a7de42fbefd8f01a4e73" class="m-doc">bn::<wbr />bg_tiles::<wbr />allow_offset</a> and <a href="namespacebn_1_1bg__tiles.html#a4d083d75b0a4aedca8f907713f9e0866" class="m-doc">bn::<wbr />bg_tiles::<wbr />set_allow_offset</a> added.</li><li>Import tool can now generate regular and affine background tiles without maps or palettes. See the <a href="import.html#import_regular_bg_tiles" class="m-doc">Regular background tiles</a> and the <a href="import.html#import_affine_bg_tiles" class="m-doc">Affine background tiles</a> import guides to learn how to import them.</li><li>BPP mode can be specified when importing sprite tiles. See the <a href="import.html#import_sprite_tiles" class="m-doc">Sprite tiles</a> import guide to learn how to specify it.</li><li>Audio updates can be interrupted.</li><li>SRAM reads and writes optimized.</li><li>BG blocks manager ROM usage reduced.</li><li><a href="https://github.com/felixjones/agbabi">agbabi</a> memory routines updated.</li><li>Missing <code>__FILE_NAME__</code> macro check added.</li><li>Missing license files added.</li></ul></section><section id="changelog_10_2_0"><h2><a href="#changelog_10_2_0">10.2.0</a></h2><ul><li><a href="classbn_1_1core__lock.html" class="m-doc">bn::<wbr />core_lock</a> added.</li><li><a href="group__math.html#ga04a69179088d3b9b510a9ca99770cc63" class="m-doc">bn::<wbr />reciprocal_16_lut</a> added.</li><li>Memory operations like <code>memcpy</code> and <code>memset</code> optimized thanks to <a href="https://github.com/felixjones/agbabi">agbabi</a>.</li><li><a href="classbn_1_1affine__mat__attributes.html" class="m-doc">bn::<wbr />affine_mat_attributes</a> scale setup optimized (CPU and ROM usage reduced).</li><li><a href="group__math.html#ga78f693fa4296294dd21c68557e916aa3" class="m-doc">bn::<wbr />atan2</a> and <a href="group__math.html#ga4f44ebe732a5726299387598c5cd1caa" class="m-doc">bn::<wbr />degrees_atan2</a> optimized thanks to <a href="https://github.com/felixjones/agbabi">agbabi</a>.</li><li>Unused interrupts removed from the interrupt manager.</li><li>More questions added to <a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page.</li></ul></section><section id="changelog_10_1_0"><h2><a href="#changelog_10_1_0">10.1.0</a></h2><ul><li>bn::audio::dmg_sync_enabled and bn::audio::set_dmg_sync_enabled added.</li><li>Custom assembler flags can be specified in the project&#x27;s <code>Makefile</code>.</li><li><a href="https://github.com/AntonioND/gbt-player">GBT Player</a> updated to 4.4.1.</li><li><a href="namespacebn.html#a0de0484a51e353c5b48db21590f4dfc9" class="m-doc">bn::<wbr />fixed</a>, <a href="classbn_1_1optional.html" class="m-doc">bn::<wbr />optional</a>, <a href="classbn_1_1string__view.html" class="m-doc">bn::<wbr />string_view</a> and <a href="classbn_1_1span.html" class="m-doc">bn::<wbr />span</a> are no longer forward declared in the public API.</li><li>Text color in assert and profile screens improved.</li><li>Audio volume setup optimized.</li><li>Clouds restored in <code>world_map</code> example.</li></ul></section><section id="changelog_10_0_0"><h2><a href="#changelog_10_0_0">10.0.0</a></h2><ul><li>Custom linker flags can be specified in the project&#x27;s <code>Makefile</code>.</li><li>Asserts ROM usage reduced.</li><li>Audio startup fixed when link-time optimization is enabled.</li><li>Audio stop fixed when link communication is active.</li><li>Parallel link-time optimization temporal files ignored and added to the list of files to clean.</li></ul></section><section id="changelog_9_5_0"><h2><a href="#changelog_9_5_0">9.5.0</a></h2><ul><li><a href="namespacebn_1_1dmg__music.html#a98b50b3376a369d98ce2b80a3f05fe85" class="m-doc">bn::<wbr />dmg_music::<wbr />left_volume</a>, <a href="namespacebn_1_1dmg__music.html#ac86c06459136d56e9d1b8047825bb445" class="m-doc">bn::<wbr />dmg_music::<wbr />right_volume</a>, <a href="namespacebn_1_1dmg__music.html#a945033f43b36f1446cde06023df208d5" class="m-doc">bn::<wbr />dmg_music::<wbr />set_left_volume</a>, <a href="namespacebn_1_1dmg__music.html#ae41d53ddc556f509d00b6c07b0e08d00" class="m-doc">bn::<wbr />dmg_music::<wbr />set_right_volume</a> and <a href="namespacebn_1_1dmg__music.html#ad1e2bc5807def79d35a9c402f5fb2a12" class="m-doc">bn::<wbr />dmg_music::<wbr />set_volume</a> added.</li><li><a href="namespacebn_1_1dmg__music.html#a4fe705dd9f573f3d1102d9986b7204da" class="m-doc">bn::<wbr />dmg_music::<wbr />position</a> and <a href="namespacebn_1_1dmg__music.html#a038276454cf28cb26f31f47dceedd15c" class="m-doc">bn::<wbr />dmg_music::<wbr />set_position</a> added.</li><li><a href="classbn_1_1dmg__music__volume__to__action.html" class="m-doc">bn::<wbr />dmg_music_volume_to_action</a>, <a href="classbn_1_1dmg__music__volume__loop__action.html" class="m-doc">bn::<wbr />dmg_music_volume_loop_action</a> and <a href="classbn_1_1dmg__music__volume__toggle__action.html" class="m-doc">bn::<wbr />dmg_music_volume_toggle_action</a> added.</li><li><a href="classbn_1_1link__state.html#a78d74a82ae819165ca3a2f6bdb530810" class="m-doc">bn::<wbr />link_state::<wbr />player_count</a> added.</li><li>An external <code>mod2gbt</code> executable is no longer necessary for importing DMG music with <code>*.mod</code> extension.</li><li><a href="https://github.com/AntonioND/gbt-player">GBT Player</a> updated to 4.4.0.</li><li>New interrupt manager implemented by <a href="https://github.com/AntonioND/libugba">Universal GBA Library</a>.</li><li>Audio commands list management optimized (ROM, EWRAM and CPU usage reduced).</li><li>Missed link messages frequency reduced.</li><li>Link data sending race condition fixed.</li><li>Link race condition on V-Blank fixed.</li><li>Audio pause/resume <a href="https://problemkaputt.de/gba.htm">No$gba</a> error removed.</li><li>Palette rotate range documentation fixed.</li><li><a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page improved.</li></ul></section><section id="changelog_9_4_1"><h2><a href="#changelog_9_4_1">9.4.1</a></h2><p>BMP files colors count calculation fixed (again).</p></section><section id="changelog_9_4_0"><h2><a href="#changelog_9_4_0">9.4.0</a></h2><ul><li><a href="namespacebn_1_1dmg__music.html" class="m-doc">bn::<wbr />dmg_music</a> and <a href="classbn_1_1dmg__music__item.html" class="m-doc">bn::<wbr />dmg_music_item</a> added (yes, music playback using DMG channels is now supported thanks to <a href="https://github.com/AntonioND/gbt-player">GBT Player</a>). See the <a href="import.html#import_dmg_music" class="m-doc">DMG music</a> import guide and the <code>dmg_audio</code> example to learn how to import and play it.</li><li>BMP files colors count calculation fixed.</li><li>C++ keywords are not valid asset names anymore.</li><li><a href="getting_started.html" class="m-doc">Getting started</a> Python setup improved.</li><li><a href="https://cinemint.itch.io/tremblay-island">Tremblay Island</a> added to <code>README.md</code>.</li></ul></section><section id="changelog_9_3_0"><h2><a href="#changelog_9_3_0">9.3.0</a></h2><ul><li><a href="namespacebn_1_1sram.html#a27b85fb4432a8146cc7331e16f161ee6" class="m-doc">bn::<wbr />sram::<wbr />clear</a> and <a href="namespacebn_1_1sram.html#a11112bdf1ae6b81af21aaf82aa180e68" class="m-doc">bn::<wbr />sram::<wbr />set_bytes</a> added.</li><li><a href="namespacebn_1_1music.html#abcf841c21212a9471651b87f5663c1ab" class="m-doc">bn::<wbr />music::<wbr />playing_item</a> added.</li><li>SRAM code moved back from ROM to EWRAM again, since it doesn&#x27;t seem to crash <a href="https://problemkaputt.de/gba.htm">No$gba</a> anymore.</li><li><a href="group__math.html#ga312ac8ea549b0f7666489a2070c92985" class="m-doc">bn::<wbr />power_of_two</a> optimized.</li><li>Keypad with frame skipping fixed.</li></ul></section><section id="changelog_9_2_0"><h2><a href="#changelog_9_2_0">9.2.0</a></h2><ul><li><a href="classbn_1_1regular__bg__ptr.html#aed147aac1c650b26ec075cb679b4c1e6" class="m-doc">bn::<wbr />regular_bg_ptr::<wbr />hw_id</a> and <a href="classbn_1_1affine__bg__ptr.html#aa5f35f299742c43fc1ab0fc996f6f5a2" class="m-doc">bn::<wbr />affine_bg_ptr::<wbr />hw_id</a> added.</li><li><a href="group__math.html#ga0632c9572fadf8f74a7df210f23646b5" class="m-doc">bn::<wbr />sin_and_cos</a>, <a href="group__math.html#gae8837970c7a3aea466c06b8077a5d17d" class="m-doc">bn::<wbr />degrees_sin_and_cos</a>, <a href="group__math.html#gadfad2d9ce4c72e19c7fb22c4dcf269a1" class="m-doc">bn::<wbr />lut_sin_and_cos</a> and <a href="group__math.html#ga71e8b700ef0c4e7e8eb264d78defe65c" class="m-doc">bn::<wbr />degrees_lut_sin_and_cos</a> added.</li><li>More <a href="classbn_1_1regular__bg__ptr.html" class="m-doc">bn::<wbr />regular_bg_ptr</a> and <a href="classbn_1_1affine__bg__ptr.html" class="m-doc">bn::<wbr />affine_bg_ptr</a> static contructors added.</li><li><a href="classbn_1_1regular__bg__map__item.html#aa03316421f48c8ffca5acd359503e066" class="m-doc">bn::<wbr />regular_bg_map_item::<wbr />cells_ptr</a> and <a href="classbn_1_1affine__bg__map__item.html#a50e0012b2593ab9fab1e1aae9d0da9e8" class="m-doc">bn::<wbr />affine_bg_map_item::<wbr />cells_ptr</a> added.</li><li><a href="classbn_1_1affine__mat__attributes.html" class="m-doc">bn::<wbr />affine_mat_attributes</a> rotation angle processing optimized.</li><li><a href="classbn_1_1unordered__map.html" class="m-doc">bn::<wbr />unordered_map</a> and <a href="classbn_1_1unordered__set.html" class="m-doc">bn::<wbr />unordered_set</a> lack of pointer stability documented.</li></ul></section><section id="changelog_9_1_1"><h2><a href="#changelog_9_1_1">9.1.1</a></h2><p><a href="group__math.html#ga82b19260c9629813641b3b12d41f6c4c" class="m-doc">bn::<wbr />calculate_sin_lut_value</a> sine and cosine symmetry with 135 and 315 degrees fixed.</p></section><section id="changelog_9_1_0"><h2><a href="#changelog_9_1_0">9.1.0</a></h2><ul><li><a href="classbn_1_1system__font.html" class="m-doc">bn::<wbr />system_font</a>, <a href="namespacebn_1_1core.html#a9cf32740bbbf4b808f7b919edea468ad" class="m-doc">bn::<wbr />core::<wbr />system_font</a> and <a href="namespacebn_1_1core.html#a481f8fc199b3af8ea8ef4257e81e76a8" class="m-doc">bn::<wbr />core::<wbr />set_system_font</a> added.</li><li><a href="namespacebn_1_1core.html#aa82b675a932f6c6b40a65d9091781fce" class="m-doc">bn::<wbr />core::<wbr />assert_tag</a> and <a href="namespacebn_1_1core.html#a0c70920adc9c80848ccf38de9192c24d" class="m-doc">bn::<wbr />core::<wbr />set_assert_tag</a> added.</li><li><a href="group__other.html#ga5e051052711decec194237b390fb8e65" class="m-doc">BN_<wbr />VERSION_<wbr />STRING</a> added.</li><li><a href="classbn_1_1rect__window.html#aaacc00be7cf63ca7e1e23850d2c5e900" class="m-doc">bn::<wbr />rect_window::<wbr />restore_boundaries</a> added.</li><li><a href="classbn_1_1window.html#a9424be720798f44eb73839344b649d52" class="m-doc">bn::<wbr />window::<wbr />set_show_all</a> and <a href="classbn_1_1window.html#a37b1be430271b3bcff55b0879d198e81" class="m-doc">bn::<wbr />window::<wbr />set_show_nothing</a> fixed.</li><li><a href="classbn_1_1utf8__characters__map__ref.html#a0c85adf0924af1a9de55619e755919d4" class="m-doc">bn::<wbr />utf8_characters_map_ref::<wbr />index</a> assert shows UTF8-character data.</li><li><a href="https://github.com/laqieer/gba-free-fonts">gba-free-fonts</a> added to <code>README.md</code>.</li></ul></section><section id="changelog_9_0_0"><h2><a href="#changelog_9_0_0">9.0.0</a></h2><ul><li><a href="classbn_1_1utf8__characters__map.html" class="m-doc">bn::<wbr />utf8_characters_map</a> and <a href="classbn_1_1utf8__characters__map__ref.html" class="m-doc">bn::<wbr />utf8_characters_map_ref</a> added: they allow to build an UTF-8 characters map in ROM, without size limit.</li><li><strong>(Breaking change)</strong> <a href="classbn_1_1sprite__font.html" class="m-doc">bn::<wbr />sprite_font</a> now manages a <a href="classbn_1_1utf8__characters__map__ref.html" class="m-doc">bn::<wbr />utf8_characters_map_ref</a> instead of a span of UTF-8 characters.</li><li><strong>(Breaking change)</strong> <code>BN_CFG_SPRITE_TEXT_MAX_UTF8_CHARACTERS</code> removed.</li><li><a href="classbn_1_1blending__transparency__attributes.html#acb5bfeca6d1cba0e2b0cdd5ab40f12fc" class="m-doc">bn::<wbr />blending_transparency_attributes::<wbr />set_transparency_and_intensity_alphas</a> added.</li><li>More questions added to <a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page.</li></ul></section><section id="changelog_8_10_0"><h2><a href="#changelog_8_10_0">8.10.0</a></h2><ul><li>Huffman decompression support added.</li><li><a href="classbn_1_1best__fit__allocator.html" class="m-doc">bn::<wbr />best_fit_allocator</a> added.</li><li><a href="classbn_1_1istring.html#add8d57586c89c989757fe24b8806f862" class="m-doc">bn::<wbr />istring::<wbr />resize</a> and <a href="classbn_1_1istring.html#af20b22cd0b0f04576065a9d78f9c1008" class="m-doc">bn::<wbr />istring::<wbr />shrink</a> added.</li><li><a href="classbn_1_1string.html" class="m-doc">bn::<wbr />string</a> and <a href="classbn_1_1string__view.html" class="m-doc">bn::<wbr />string_view</a> compatibility improved.</li><li><a href="classbn_1_1string.html" class="m-doc">bn::<wbr />string</a> construction, assignment and append optimized.</li><li>Integer to string conversion optimized.</li><li>Slot index added to palettes manager status log.</li><li><a href="group__std.html#gaabf2d375c341349999bc60835e47674a" class="m-doc">bn::<wbr />calloc</a> and <a href="namespacebn_1_1memory.html#a422256abba617a525feacb95881f9c79" class="m-doc">bn::<wbr />memory::<wbr />ewram_calloc</a> interface fixed.</li><li><code>.elf</code> files <a href="https://problemkaputt.de/gba.htm">No$gba</a> support restored.</li><li><code>-O0</code> builds support restored.</li><li>More questions added to <a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page.</li></ul></section><section id="changelog_8_9_0"><h2><a href="#changelog_8_9_0">8.9.0</a></h2><ul><li>Hue shift palette effect added. See the <code>palettes</code> example to learn how to use it.</li><li>Brightness effect ROM usage reduced.</li><li><a href="classbn_1_1sprite__item.html" class="m-doc">bn::<wbr />sprite_item</a> and <a href="classbn_1_1sprite__tiles__item.html" class="m-doc">bn::<wbr />sprite_tiles_item</a> size reduced.</li><li>Automatic sprite double size detection fixed.</li><li>bn::hbe_visible_toggle_action removed, since it was not possible to use it.</li><li>Clang build fixes.</li><li>Clang-Tidy warnings fixed.</li><li>New games made with Butano added to <code>README.md</code>.</li></ul></section><section id="changelog_8_8_0"><h2><a href="#changelog_8_8_0">8.8.0</a></h2><ul><li>Modified assets detection optimized.</li><li>Audio and graphics tools unified in order to reduce build time.</li><li>bn::newton_raphson_sqrt removed, since it doesn&#x27;t work for <a href="namespacebn.html#a0de0484a51e353c5b48db21590f4dfc9" class="m-doc">bn::<wbr />fixed</a> input values.</li></ul></section><section id="changelog_8_7_0"><h2><a href="#changelog_8_7_0">8.7.0</a></h2><ul><li>An external <a href="classbn_1_1bg__palette__item.html" class="m-doc">bn::<wbr />bg_palette_item</a> can be specified when importing regular and affine backgrounds.</li><li>Colors count can be specified when importing sprite and background palettes.</li><li>Standard containers equality comparison optimized.</li><li>Asserts file name hack fixed.</li><li><a href="https://github.com/AntonioND/libugba">Universal GBA Library</a> LGPL license files removed.</li><li>Standard containers documentation improved.</li><li><a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page improved.</li></ul></section><section id="changelog_8_6_0"><h2><a href="#changelog_8_6_0">8.6.0</a></h2><ul><li><a href="classbn_1_1random.html#a5e9c1dadffd6b24904a758155a5995c2" class="m-doc">bn::<wbr />random::<wbr />get_int</a> and <a href="classbn_1_1random.html#a6b11ac067ee482a20a84e201dfbb1264" class="m-doc">bn::<wbr />random::<wbr />get_fixed</a> added.</li><li><a href="group__std.html#gaabf2d375c341349999bc60835e47674a" class="m-doc">bn::<wbr />calloc</a>, <a href="group__std.html#gaa32bd5f6749f0253113b1c4aa7585dea" class="m-doc">bn::<wbr />realloc</a>, <a href="namespacebn_1_1memory.html#a422256abba617a525feacb95881f9c79" class="m-doc">bn::<wbr />memory::<wbr />ewram_calloc</a> and <a href="namespacebn_1_1memory.html#ad61fe93e6cd5679e6a7e0befaaf7774a" class="m-doc">bn::<wbr />memory::<wbr />ewram_realloc</a> added.</li><li><a href="classbn_1_1unique__ptr.html" class="m-doc">bn::<wbr />unique_ptr</a> moved to its own header file.</li><li><a href="classbn_1_1pool.html" class="m-doc">bn::<wbr />pool</a> and <a href="classbn_1_1generic__pool.html" class="m-doc">bn::<wbr />generic_pool</a> ROM usage reduced.</li><li>Automatic 4BPP regular backgrounds generation fixed.</li><li>Asserts disabled build warnings fixed.</li><li><a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page improved.</li></ul></section><section id="changelog_8_5_0"><h2><a href="#changelog_8_5_0">8.5.0</a></h2><ul><li><a href="classbn_1_1optional.html#a75de95398f2ddcba2d7e322074500362" class="m-doc">bn::<wbr />optional::<wbr />get</a> added.</li><li><a href="classbn_1_1bitset.html" class="m-doc">bn::<wbr />bitset</a> and <a href="classbn_1_1bitset__ref.html" class="m-doc">bn::<wbr />bitset_ref</a> optimized (managed bits count now must be a multiple of 8).</li><li>ROM usage reduced due to unnecessary internal asserts removed.</li><li>Blending hardware weights fixed.</li><li><a href="classbn_1_1regular__bg__map__cell__info.html" class="m-doc">bn::<wbr />regular_bg_map_cell_info</a> documentation fixed.</li></ul></section><section id="changelog_8_4_0"><h2><a href="#changelog_8_4_0">8.4.0</a></h2><ul><li><a href="classbn_1_1bitset__ref.html" class="m-doc">bn::<wbr />bitset_ref</a> added.</li><li><a href="group__math.html#ga85e7e6e77aa0c5e2ac9ca9ca1147cb48" class="m-doc">bn::<wbr />diamond_angle</a> and <a href="group__math.html#gae58559f9c545a9787c41b2e59db8eac7" class="m-doc">bn::<wbr />degrees_diamond_angle</a> added.</li><li>Asserts ROM usage reduced.</li><li>Unnecessary <code>inline</code> keyword usages removed.</li></ul></section><section id="changelog_8_3_0"><h2><a href="#changelog_8_3_0">8.3.0</a></h2><ul><li>Maps commit optimized by more than 50% in some cases.</li><li>Integer alignment at minimum enforced in all containers.</li><li>BG blocks manager and sprite tiles manager commit fixed.</li></ul></section><section id="changelog_8_2_0"><h2><a href="#changelog_8_2_0">8.2.0</a></h2><ul><li><strong>(Security issue)</strong> Source code files full path is not stored in output ROMs anymore.</li><li>Some Clang-Tidy and Cppcheck warnings removed.</li></ul></section><section id="changelog_8_1_0"><h2><a href="#changelog_8_1_0">8.1.0</a></h2><ul><li><a href="namespacebn_1_1color__effect.html" class="m-doc">bn::<wbr />color_effect</a> added.</li><li><a href="namespacebn_1_1memory.html#afec14a07e15f6a18c0ae80f7249dc2a8" class="m-doc">bn::<wbr />memory::<wbr />decompress</a> added.</li><li>All <code>uncompress</code> methods renamed to <code>decompress</code>.</li><li>All color effects optimized.</li><li>Palettes update and search optimized.</li><li><a href="getting_started.html" class="m-doc">Getting started</a> page improved.</li></ul></section><section id="changelog_8_0_0"><h2><a href="#changelog_8_0_0">8.0.0</a></h2><ul><li>Blending transparency weights can be setup separately with <a href="namespacebn_1_1blending.html#a0f43983f1249a284593362f89b0560dd" class="m-doc">bn::<wbr />blending::<wbr />set_transparency_top_weight</a> and <a href="namespacebn_1_1blending.html#a9884d846a416eda4e30bad11912cbe37" class="m-doc">bn::<wbr />blending::<wbr />set_transparency_bottom_weight</a>.</li><li><strong>(Breaking change)</strong> <a href="classbn_1_1blending__transparency__attributes.html" class="m-doc">bn::<wbr />blending_transparency_attributes</a> interface has changed to allow to setup transparency weights separately.</li><li>Actions for blending transparency weights added.</li><li>Internal graphics suffix changed from <code>bn_graphics</code> to <code>bn_gfx</code>. Remember to rebuild your project after updating.</li><li><a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page improved.</li></ul></section><section id="changelog_7_8_0"><h2><a href="#changelog_7_8_0">7.8.0</a></h2><ul><li>Generic slow game pak detection replaces SuperCard SD specific one.</li><li><a href="group__game__pak.html#ga0a6924bb73a30135f3267815e2c1dfd4" class="m-doc">BN_<wbr />GAME_<wbr />PAK_<wbr />WAIT_<wbr />STATE_<wbr />FIRST_<wbr />AUTO</a> and <a href="group__game__pak.html#ga4422670665782e2ede9f83c37a355df8" class="m-doc">BN_<wbr />GAME_<wbr />PAK_<wbr />WAIT_<wbr />STATE_<wbr />SECOND_<wbr />AUTO</a> enabled by default.</li><li>Affine matrices update optimized.</li><li>Tiles and maps managers optimized.</li><li>Background windows optimized.</li><li><a href="namespacebn_1_1audio.html#a9d49b03c820bb9caa74417f705416524" class="m-doc">bn::<wbr />audio::<wbr />update_on_vblank</a> and <a href="namespacebn_1_1audio.html#a8e8e0f8ecfeb2e8d7f5d3f6d091fc4b3" class="m-doc">bn::<wbr />audio::<wbr />set_update_on_vblank</a> documentation improved.</li><li><a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page improved.</li></ul></section><section id="changelog_7_7_0"><h2><a href="#changelog_7_7_0">7.7.0</a></h2><ul><li><a href="namespacebn_1_1audio.html#a9d49b03c820bb9caa74417f705416524" class="m-doc">bn::<wbr />audio::<wbr />update_on_vblank</a> and <a href="namespacebn_1_1audio.html#a8e8e0f8ecfeb2e8d7f5d3f6d091fc4b3" class="m-doc">bn::<wbr />audio::<wbr />set_update_on_vblank</a> added.</li><li>Sprite tiles update and commit optimized.</li><li>Background tiles and maps update and commit optimized.</li><li>Big maps commit optimized.</li><li>Asserts ROM usage reduced.</li><li>H-Blank effects ROM usage reduced.</li><li><a href="classbn_1_1sprite__text__generator.html" class="m-doc">bn::<wbr />sprite_text_generator</a> ROM usage reduced.</li></ul></section><section id="changelog_7_6_0"><h2><a href="#changelog_7_6_0">7.6.0</a></h2><ul><li>Display and audio hardware commit optimized.</li><li><a href="classbn_1_1unique__ptr.html" class="m-doc">bn::<wbr />unique_ptr</a> size reduced.</li><li><a href="classbn_1_1regular__bg__ptr.html#ac075733c3af16d760c08ce9433f21fda" class="m-doc">bn::<wbr />regular_bg_ptr::<wbr />set_item</a> and <a href="classbn_1_1affine__bg__ptr.html#a454ab025d8c5726e46a114973f725a77" class="m-doc">bn::<wbr />affine_bg_ptr::<wbr />set_item</a> fixed.</li><li><a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page improved.</li><li><a href="index.html#main_licenses" class="m-doc">Licenses</a> section improved.</li></ul></section><section id="changelog_7_5_1"><h2><a href="#changelog_7_5_1">7.5.1</a></h2><p>Audio and HDMA issues when updating at less than 60FPS fixed.</p></section><section id="changelog_7_5_0"><h2><a href="#changelog_7_5_0">7.5.0</a></h2><ul><li><a href="namespacebn_1_1sprites.html#a157adb21a3201411ac3e2c90f98358bb" class="m-doc">bn::<wbr />sprites::<wbr />reserved_handles_count</a> and <a href="namespacebn_1_1sprites.html#adce0d08b581d9cd4287cd1170a88586c" class="m-doc">bn::<wbr />sprites::<wbr />set_reserved_handles_count</a> added.</li><li><a href="group__profiler.html#ga820f9dd4d7e1840781b0a221ab3872e7" class="m-doc">BN_<wbr />CFG_<wbr />PROFILER_<wbr />LOG_<wbr />ENGINE_<wbr />DETAILED</a> added.</li><li>Sprites and backgrounds decompression optimized thanks to <a href="https://github.com/Cult-of-GBA/BIOS">Cult-of-GBA BIOS</a>.</li><li>Sprites and backgrounds hardware setup optimized.</li><li>Sprites automatic double size mode optimized.</li><li>Affine sprites hiding fixed.</li></ul></section><section id="changelog_7_4_0"><h2><a href="#changelog_7_4_0">7.4.0</a></h2><ul><li>Run-length is preferred to LZ77 when choosing best compression mode.</li><li>Sprites automatic double size mode and affine matrix management fixed.</li><li><a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page improved.</li></ul></section><section id="changelog_7_3_0"><h2><a href="#changelog_7_3_0">7.3.0</a></h2><ul><li><a href="classbn_1_1sprite__text__generator.html" class="m-doc">bn::<wbr />sprite_text_generator</a> can now plot multiple 16x16 variable width characters in a single sprite.</li><li><a href="classbn_1_1sprite__text__generator.html" class="m-doc">bn::<wbr />sprite_text_generator</a> IWRAM usage reduced.</li><li>Third party libraries to link can be specified in the project&#x27;s <code>Makefile</code>.</li><li>Project&#x27;s <code>Makefile</code> allows to build source files generated with an external tool. See the <code>external_tool</code> example to learn how to do it.</li><li><code>butano-audio-tool.py</code> generates a list of all available music and sound items with their name.</li><li><code>audio_player</code> example added.</li><li><a href="https://gvaliente.itch.io/varooom-3d">Varooom 3D</a> improved (check its <code>readme.txt</code> file for details).</li></ul></section><section id="changelog_7_2_0"><h2><a href="#changelog_7_2_0">7.2.0</a></h2><ul><li><a href="classbn_1_1regular__bg__map__cell__info.html" class="m-doc">bn::<wbr />regular_bg_map_cell_info</a> and <a href="classbn_1_1affine__bg__map__cell__info.html" class="m-doc">bn::<wbr />affine_bg_map_cell_info</a> added.</li><li><a href="classbn_1_1regular__bg__map__item.html#a5593191f3ee570ca787be6eb5aabf618" class="m-doc">bn::<wbr />regular_bg_map_item::<wbr />cell_index</a> and <a href="classbn_1_1regular__bg__map__item.html#abe0aa60aa0e079c9be371976e4b5a94d" class="m-doc">bn::<wbr />regular_bg_map_item::<wbr />cell</a> added.</li><li><a href="classbn_1_1affine__bg__map__item.html#a0a883d59d794d1cd293e538716a0bc69" class="m-doc">bn::<wbr />affine_bg_map_item::<wbr />cell_index</a> and <a href="classbn_1_1affine__bg__map__item.html#a6a17fc2c0e71cc4d6848ef53ab87cca1" class="m-doc">bn::<wbr />affine_bg_map_item::<wbr />cell</a> added.</li><li>Maps commit optimized by more than 200% in some cases.</li><li><code>dynamic_regular_bg</code> example added.</li><li><code>dynamic_bg</code> example renamed to <code>dynamic_affine_bg</code> and improved.</li></ul></section><section id="changelog_7_1_1"><h2><a href="#changelog_7_1_1">7.1.1</a></h2><p><a href="classbn_1_1vector.html" class="m-doc">bn::<wbr />vector</a>, <a href="classbn_1_1unordered__map.html" class="m-doc">bn::<wbr />unordered_map</a> and <a href="classbn_1_1unordered__set.html" class="m-doc">bn::<wbr />unordered_set</a> move constructors and assignment operators fixed.</p></section><section id="changelog_7_1_0"><h2><a href="#changelog_7_1_0">7.1.0</a></h2><ul><li>HDMA commit fixed.</li><li><a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page improved.</li><li>Games made with Butano added to <code>README.md</code>.</li></ul></section><section id="changelog_7_0_1"><h2><a href="#changelog_7_0_1">7.0.1</a></h2><p><a href="group__string.html#gaf80b4dbcc891f44f80be060b79573a2f" class="m-doc">bn::<wbr />format</a> build fix.</p></section><section id="changelog_7_0_0"><h2><a href="#changelog_7_0_0">7.0.0</a></h2><ul><li><a href="https://gvaliente.itch.io/varooom-3d">Varooom 3D</a> source code and assets added.</li><li>Maximum number of active H-Blank effects reduced to 6.</li><li>Common files moved to <code>common</code> namespace.</li></ul></section><section id="changelog_6_18_0"><h2><a href="#changelog_6_18_0">6.18.0</a></h2><ul><li>Generated items are now <code>constexpr inline</code> to avoid being copied to every translation unit.</li><li>Sprites EWRAM usage reduced.</li><li>Different type backgrounds sorting fixed.</li></ul></section><section id="changelog_6_17_1"><h2><a href="#changelog_6_17_1">6.17.1</a></h2><ul><li>bn::sort with 128bit sort keys fixed.</li><li>IRQs setup during startup improved.</li></ul></section><section id="changelog_6_17_0"><h2><a href="#changelog_6_17_0">6.17.0</a></h2><ul><li><a href="namespacebn_1_1memory.html#a0d18408ebe87f9a35fe7ccd7dbd4f23a" class="m-doc">bn::<wbr />memory::<wbr />used_stack_iwram</a> added.</li><li>bn::sort optimized.</li><li>VRAM allocation error messages improved.</li><li><a href="classbn_1_1optional.html#a16751a08309d9fa8ea1dec1991342ee5" class="m-doc">bn::<wbr />optional::<wbr />emplace</a> copy avoided.</li><li><a href="import.html" class="m-doc">Importing assets</a> guide improved.</li><li>More questions added to <a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page.</li></ul></section><section id="changelog_6_16_0"><h2><a href="#changelog_6_16_0">6.16.0</a></h2><ul><li><a href="group__math.html#gae40612108ff33cd48ca1b2c25dea2064" class="m-doc">bn::<wbr />sin_lut</a> is not copied to every translation unit.</li><li><a href="group__math.html#ga21a22d7f03116a7613dd016d4dfdf37f" class="m-doc">bn::<wbr />reciprocal_lut</a> is not copied to every translation unit.</li><li>GBA keypad is read after playing all keypad commands.</li><li><a href="group__math.html#ga22a19da000f91da1b7ec4bd18e5206fb" class="m-doc">bn::<wbr />degrees_lut_cos</a> assert added.</li></ul></section><section id="changelog_6_15_0"><h2><a href="#changelog_6_15_0">6.15.0</a></h2><ul><li><a href="classbn_1_1rect.html#ac75c661faa47504dc7ce33e9b1808ac1" class="m-doc">bn::<wbr />rect::<wbr />top_right</a>, <a href="classbn_1_1rect.html#ab4b28ee6be227e318c9f5277152364ad" class="m-doc">bn::<wbr />rect::<wbr />bottom_left</a>, <a href="classbn_1_1fixed__rect__t.html#a6711fdcb5824caa80ece53fc65099a71" class="m-doc">bn::<wbr />fixed_rect::<wbr />top_right</a> and <a href="classbn_1_1fixed__rect__t.html#aabccd88d391f4da869e6e6bdbdf5471b" class="m-doc">bn::<wbr />fixed_rect::<wbr />bottom_left</a> added.</li><li>GPIO register is not setup unless needed (avoids <a href="https://mgba.io">mGBA</a> warning at startup).</li><li>SRAM code moved from EWRAM to ROM in order to avoid a <a href="https://problemkaputt.de/gba.htm">No$gba</a> error.</li><li><a href="group__math.html#ga838914e9d067e7621300539acc2e291f" class="m-doc">bn::<wbr />abs</a> for unsigned arguments improved.</li><li><code>*.elfbin</code> output files renamed to <code>*.elf</code> as it should.</li><li><a href="classbn_1_1iunordered__map.html#aa448632bf3e2c465be5e7de1fa25fee3" class="m-doc">bn::<wbr />unordered_map::<wbr />erase</a> and <a href="classbn_1_1iunordered__set.html#a921e7b67cda1843ee11f7a805ab3c0e8" class="m-doc">bn::<wbr />unordered_set::<wbr />erase</a> fixed.</li></ul></section><section id="changelog_6_14_0"><h2><a href="#changelog_6_14_0">6.14.0</a></h2><ul><li>Asserts ROM usage reduced.</li><li><a href="classbn_1_1ideque.html#af917f468aa8b052319c6e9de38e9d3aa" class="m-doc">bn::<wbr />deque::<wbr />push_front</a>, <a href="classbn_1_1ideque.html#a435a00b14c60001a477fb81fe0621124" class="m-doc">bn::<wbr />deque::<wbr />emplace_front</a> and <a href="classbn_1_1ideque.html#a8e1c12d5e3d286073837df7ef65b6124" class="m-doc">bn::<wbr />deque::<wbr />insert</a> fixed.</li></ul></section><section id="changelog_6_13_1"><h2><a href="#changelog_6_13_1">6.13.1</a></h2><ul><li><a href="group__array.html#ga56c79efa1a8dee910b5be52ed8b7ca90" class="m-doc">bn::<wbr />to_array</a> fixed.</li><li><a href="classbn_1_1sprite__text__generator.html" class="m-doc">bn::<wbr />sprite_text_generator</a> documentation fixed.</li></ul></section><section id="changelog_6_13_0"><h2><a href="#changelog_6_13_0">6.13.0</a></h2><ul><li>EWRAM wait states count can be specified with <code>BN_CFG_EWRAM_WAIT_STATE</code>.</li><li><a href="classbn_1_1fixed__t.html#aa49a0c591512a021d7afc4f6917d7b95" class="m-doc">bn::<wbr />fixed_t::<wbr />floor_integer</a> and <a href="classbn_1_1fixed__t.html#a882e785fc0beeac0c9ce6d4421f7b1a1" class="m-doc">bn::<wbr />fixed_t::<wbr />ceil_integer</a> added.</li><li><a href="namespacebn_1_1keypad.html#ab06a6c54df23bd7613eb3e40e895640c" class="m-doc">bn::<wbr />keypad::<wbr />any_held</a>, <a href="namespacebn_1_1keypad.html#a8eadee7bf538d004570e26c5b017841d" class="m-doc">bn::<wbr />keypad::<wbr />any_pressed</a> and <a href="namespacebn_1_1keypad.html#a68f21741db11ebddef1a578adcf6d269" class="m-doc">bn::<wbr />keypad::<wbr />any_released</a> added.</li><li>Unnecessary GPIO register writes avoided.</li><li><a href="namespacebn.html#ad53e30290510c19fbc9c40abffc95408" class="m-doc">bn::<wbr />type_id</a> marked as <code>constexpr</code>.</li><li>Background move actions fixed.</li><li><code>constexpr const</code> replaced with <code>constexpr</code> where it makes sense.</li></ul></section><section id="changelog_6_12_0"><h2><a href="#changelog_6_12_0">6.12.0</a></h2><ul><li>Multiplication and division methods added to <a href="namespacebn.html#a9d90d92eb951850d75801f5508fc8e90" class="m-doc">bn::<wbr />fixed_point</a>, <a href="namespacebn.html#a63eda56aa6f4552d9dd5c99805ddffa4" class="m-doc">bn::<wbr />fixed_size</a> and <a href="namespacebn.html#ab92161c3965138dd8983d58725b13647" class="m-doc">bn::<wbr />fixed_rect</a>.</li><li>Colors count added to palettes manager status log.</li><li>Invalid <a href="classbn_1_1fixed__t.html" class="m-doc">bn::<wbr />fixed_t</a> unsigned operator overloads removed.</li></ul></section><section id="changelog_6_11_0"><h2><a href="#changelog_6_11_0">6.11.0</a></h2><ul><li>An external tool can be called from the project&#x27;s <code>Makefile</code>. See the <code>external_tool</code> example to learn how to call it.</li><li>Affine background tiles offset optimized.</li><li>Big numbers to string conversion optimized.</li><li>32bit integer division optimized.</li><li>64bit integer division by 0 assert added.</li><li>Big maps maximum valid position fixed.</li><li>Compressed tiles warning fixed.</li><li>GCC 11 build warning fixed.</li><li>Some 8x8 sprite text characters fixed.</li><li><a href="qt_creator.html" class="m-doc">Qt Creator setup guide</a> added.</li><li>More questions added to <a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page.</li></ul></section><section id="changelog_6_10_0"><h2><a href="#changelog_6_10_0">6.10.0</a></h2><ul><li><code>dynamic_bg</code> example added.</li><li>Affine background tiles offset fixed.</li></ul></section><section id="changelog_6_9_0"><h2><a href="#changelog_6_9_0">6.9.0</a></h2><ul><li><a href="classbn_1_1sprite__font.html" class="m-doc">bn::<wbr />sprite_font</a> supports all sprite shapes and sizes.</li><li>Trivial type containers destruction optimized.</li><li>Container destructors are always <code>noexcept</code>.</li><li>Redundant container asserts removed.</li><li>GPIO direction register setup.</li></ul></section><section id="changelog_6_8_0"><h2><a href="#changelog_6_8_0">6.8.0</a></h2><ul><li>Sprites optimized.</li><li>Blending optimized.</li><li>Mosaic optimized.</li><li>Internal memory transfers optimized.</li><li><code>texture_polygons</code> example affine parameters fixed.</li><li>Clouds removed from <code>world_map</code> example.</li></ul></section><section id="changelog_6_7_0"><h2><a href="#changelog_6_7_0">6.7.0</a></h2><ul><li>Automatic sprite double size detection improved.</li><li>Butano Fighter allows to disable rumble in the title menu.</li></ul></section><section id="changelog_6_6_2"><h2><a href="#changelog_6_6_2">6.6.2</a></h2><p>Automatic sprite double size detection fixed.</p></section><section id="changelog_6_6_1"><h2><a href="#changelog_6_6_1">6.6.1</a></h2><p>BG blocks manager use after move fixed.</p></section><section id="changelog_6_6_0"><h2><a href="#changelog_6_6_0">6.6.0</a></h2><ul><li>SRAM memory usage reduced.</li><li>Sprite animate actions memory usage reduced.</li><li>Missing asserts added to some actions.</li><li><a href="classbn_1_1random.html" class="m-doc">bn::<wbr />random</a> is now a trivial class.</li><li>BG blocks manager search fixed.</li><li><code>world_map</code> example frame rate back to 60FPS.</li></ul></section><section id="changelog_6_5_0"><h2><a href="#changelog_6_5_0">6.5.0</a></h2><ul><li><a href="classbn_1_1bitset.html" class="m-doc">bn::<wbr />bitset</a> and <a href="classbn_1_1ibitset.html" class="m-doc">bn::<wbr />ibitset</a> added.</li><li>BG blocks manager and sprite tiles manager allocation fixed.</li></ul></section><section id="changelog_6_4_0"><h2><a href="#changelog_6_4_0">6.4.0</a></h2><ul><li>Sprites and affine backgrounds support horizontal and vertical shear.</li><li><a href="classbn_1_1affine__mat__attributes.html#a9532472e1c1f7b4c54cf46e210a3de27" class="m-doc">bn::<wbr />affine_mat_attributes::<wbr />unsafe_set_register_values</a> added.</li><li><code>texture_polygons</code> example added.</li><li>More questions added to <a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page.</li></ul></section><section id="changelog_6_3_0"><h2><a href="#changelog_6_3_0">6.3.0</a></h2><ul><li><a href="group__other.html#ga05c5339720804ede55ecdf370cdf53d1" class="m-doc">BN_<wbr />VERSION_<wbr />MAJOR</a>, <a href="group__other.html#gabdede311f20cedce7959edeaf7929a76" class="m-doc">BN_<wbr />VERSION_<wbr />MINOR</a> and <a href="group__other.html#ga9cc624cc80c2266e9bc5c223e95076de" class="m-doc">BN_<wbr />VERSION_<wbr />PATCH</a> added.</li><li><a href="namespacebn_1_1core.html#aed64f380e43b831c5b6b4602a508f811" class="m-doc">bn::<wbr />core::<wbr />current_cpu_usage</a>, <a href="namespacebn_1_1core.html#a5c36ceb40cf617f8ffa442bbf15126c1" class="m-doc">bn::<wbr />core::<wbr />last_cpu_usage</a> and <a href="namespacebn_1_1core.html#aace6487154c238af8d207e0e400f6fcf" class="m-doc">bn::<wbr />core::<wbr />last_vblank_usage</a> accuracy improved.</li><li>Signed division fixed and optimized.</li><li>BG blocks manager and sprite tiles manager allocation fixed.</li><li>BG blocks manager prints requested blocks count when an allocation fails.</li></ul></section><section id="changelog_6_2_0"><h2><a href="#changelog_6_2_0">6.2.0</a></h2><ul><li><a href="namespacebn_1_1core.html#ac8686039150e9c214ff65d1d5cfbdedf" class="m-doc">bn::<wbr />core::<wbr />skip_frames</a> and <a href="namespacebn_1_1core.html#a4f662445a2e8ff6d2b370cb0a27b2ff0" class="m-doc">bn::<wbr />core::<wbr />set_skip_frames</a> added.</li><li><a href="classbn_1_1sprite__font.html" class="m-doc">bn::<wbr />sprite_font</a> usability improved.</li><li><a href="group__math.html#ga21a22d7f03116a7613dd016d4dfdf37f" class="m-doc">bn::<wbr />reciprocal_lut</a> and <a href="group__math.html#gafc2a7463570f753f22185c1529bd9ee6" class="m-doc">bn::<wbr />lut_reciprocal</a> fixed.</li></ul></section><section id="changelog_6_1_0"><h2><a href="#changelog_6_1_0">6.1.0</a></h2><ul><li>Sprite tiles generation outputs sprite shape and size.</li><li><a href="group__assert.html#gaaa004c9d4e615716c2fff960727e5cd8" class="m-doc">BN_<wbr />ASSERT</a> and <a href="group__assert.html#ga8cf94cdc062cbd6f5c8c6a6cb9c71e07" class="m-doc">BN_<wbr />ERROR</a> can be modified or disabled for specific code sections.</li><li>Sprites IWRAM usage reduced.</li><li>Some internal asserts removed.</li><li>Profiler screen fixed.</li><li>Documentation explains how to place data in ROM.</li></ul></section><section id="changelog_6_0_0"><h2><a href="#changelog_6_0_0">6.0.0</a></h2><ul><li>Rumble support (if your cart supports it). See <a href="group__rumble.html" class="m-doc">Rumble</a> and the <code>rumble</code> example.</li><li><a href="namespacebn_1_1sprites.html#a423fcac2c89998836ca237ee1f4c65d0" class="m-doc">bn::<wbr />sprites::<wbr />reload</a> added.</li><li><a href="namespacebn_1_1hdma.html#ae75aaa5c4ee26a0a18ca2261b3d98bd9" class="m-doc">bn::<wbr />hdma::<wbr />high_priority_start</a> and <a href="namespacebn_1_1hdma.html#ad02fcb488caae5edd2633e5dbc7e72d8" class="m-doc">bn::<wbr />hdma::<wbr />high_priority_stop</a> added.</li><li><a href="namespacebn_1_1hdma.html#af7f3a317f1cddff57aad63efbbdb4cc2" class="m-doc">bn::<wbr />hdma::<wbr />running</a> and <a href="namespacebn_1_1hdma.html#a70ff40c328afff22c8a6b71ef5a2f507" class="m-doc">bn::<wbr />hdma::<wbr />high_priority_running</a> added.</li><li>Sprite tiles can be generated from images alone, without palettes.</li><li>Graphics and audio subfolders supported.</li><li><a href="namespacebn_1_1core.html#adab0aa2898c9c07fe9e8cfb75ab820ec" class="m-doc">bn::<wbr />core::<wbr />reset</a> fixed.</li><li>HDMA disable when an assert or the profiler are shown fixed.</li><li>HDMA first screen horizontal line fixed.</li><li>bn::newton_raphson_sqrt recursion avoided.</li><li>Python install guide improved.</li></ul></section><section id="changelog_5_3_1"><h2><a href="#changelog_5_3_1">5.3.1</a></h2><p><a href="group__math.html#ga78f693fa4296294dd21c68557e916aa3" class="m-doc">bn::<wbr />atan2</a> and <a href="group__math.html#ga4f44ebe732a5726299387598c5cd1caa" class="m-doc">bn::<wbr />degrees_atan2</a> fixed.</p></section><section id="changelog_5_3_0"><h2><a href="#changelog_5_3_0">5.3.0</a></h2><ul><li><a href="group__math.html#ga589ed853116ac004d9ecc481fc283438" class="m-doc">bn::<wbr />sin</a>, <a href="group__math.html#gacb83d14734a56f9da47034ce80459b34" class="m-doc">bn::<wbr />cos</a>, <a href="group__math.html#ga78f693fa4296294dd21c68557e916aa3" class="m-doc">bn::<wbr />atan2</a> and <a href="group__math.html#ga4f44ebe732a5726299387598c5cd1caa" class="m-doc">bn::<wbr />degrees_atan2</a> added.</li><li>H-Blank effects optimized (thanks JoaoBaptMG).</li><li><a href="group__math.html#ga82b19260c9629813641b3b12d41f6c4c" class="m-doc">bn::<wbr />calculate_sin_lut_value</a> optimized.</li><li><a href="group__math.html#gafc2a7463570f753f22185c1529bd9ee6" class="m-doc">bn::<wbr />lut_reciprocal</a> optimized.</li><li><a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page improved.</li></ul></section><section id="changelog_5_2_0"><h2><a href="#changelog_5_2_0">5.2.0</a></h2><ul><li><a href="classbn_1_1sprite__ptr.html#a1146d2f0cd6af4640d6cf657141860a3" class="m-doc">bn::<wbr />sprite_ptr::<wbr />put_below</a>, <a href="classbn_1_1regular__bg__ptr.html#a957eff463df149614b9a5f022c86f7a8" class="m-doc">bn::<wbr />regular_bg_ptr::<wbr />put_below</a> and <a href="classbn_1_1affine__bg__ptr.html#aff23390b08aac4ae352bec1b31ff5e08" class="m-doc">bn::<wbr />affine_bg_ptr::<wbr />put_below</a> added.</li><li>H-Blank effects IWRAM usage reduced.</li><li><code>butano-graphics-tool.py</code> errors reporting improved.</li></ul></section><section id="changelog_5_1_0"><h2><a href="#changelog_5_1_0">5.1.0</a></h2><ul><li>Automatic game pak wait states setup (see <a href="group__game__pak.html#ga0a6924bb73a30135f3267815e2c1dfd4" class="m-doc">BN_<wbr />GAME_<wbr />PAK_<wbr />WAIT_<wbr />STATE_<wbr />FIRST_<wbr />AUTO</a> and <a href="group__game__pak.html#ga4422670665782e2ede9f83c37a355df8" class="m-doc">BN_<wbr />GAME_<wbr />PAK_<wbr />WAIT_<wbr />STATE_<wbr />SECOND_<wbr />AUTO</a> for more information).</li><li><a href="group__string.html#gaf80b4dbcc891f44f80be060b79573a2f" class="m-doc">bn::<wbr />format</a> and <a href="group__string.html#gafef1d73c4b31530dae4dccf010a2acbe" class="m-doc">bn::<wbr />format_ref</a> functions added.</li><li>Some methods to indicate if a background or a background map are big or not have been added.</li><li><a href="group__math.html#ga82b19260c9629813641b3b12d41f6c4c" class="m-doc">bn::<wbr />calculate_sin_lut_value</a> precision improved.</li><li><a href="faq.html" class="m-doc">Frequently asked questions (FAQ)</a> page added.</li><li><code>butano-graphics-tool.py</code> now uses all CPU cores.</li><li>Missing third party license files included.</li></ul></section><section id="changelog_5_0_0"><h2><a href="#changelog_5_0_0">5.0.0</a></h2><ul><li>Compressed sprites and backgrounds support (see <a href="import.html" class="m-doc">Importing assets</a> to learn how to generate them).</li><li><a href="group__math.html#ga8f5501ff7b8ffc25e2a692796dea56b9" class="m-doc">bn::<wbr />degrees_sin</a> and <a href="group__math.html#ga6033befc7142055cf5249bc446ea0f2f" class="m-doc">bn::<wbr />degrees_cos</a> don&#x27;t use a LUT anymore, they are replaced by <a href="group__math.html#ga5efbddb9091a5e4cff2d8ac4c97992f4" class="m-doc">bn::<wbr />degrees_lut_sin</a> and <a href="group__math.html#ga22a19da000f91da1b7ec4bd18e5206fb" class="m-doc">bn::<wbr />degrees_lut_cos</a>.</li><li><a href="group__math.html#gaa68f202b3c36d0b0b208d6993fcc14be" class="m-doc">bn::<wbr />lut_sin</a> and <a href="group__math.html#ga98f2967b1d885540c4cd2a141a8bd6e2" class="m-doc">bn::<wbr />lut_cos</a> input angle range increased to [0..2048].</li><li>Enum classes size reduced.</li><li>Required fields when importing assets are not defaulted anymore.</li><li><a href="classbn_1_1rule__of__three__approximation.html" class="m-doc">bn::<wbr />rule_of_three_approximation</a> overflow fixed.</li></ul></section><section id="changelog_4_4_0"><h2><a href="#changelog_4_4_0">4.4.0</a></h2><ul><li><a href="classbn_1_1sprite__font.html" class="m-doc">bn::<wbr />sprite_font</a> allows to specify space between characters.</li><li>Background palettes bits per pixel mode can be specified by the user.</li><li>Palettes change optimized.</li><li>Unused palette colors are not imported anymore.</li><li><a href="classbn_1_1sprite__ptr.html#acbc738b66f5dcd82c9359767bc47f14d" class="m-doc">bn::<wbr />sprite_ptr::<wbr />set_tiles()</a> validation fixed.</li></ul></section><section id="changelog_4_3_0"><h2><a href="#changelog_4_3_0">4.3.0</a></h2><ul><li>H-Blank effects EWRAM usage reduced (more than 2KB by default).</li><li>Optimization level changed to <code>-O2</code> to avoid another <a href="https://problemkaputt.de/gba.htm">No$gba</a> crash.</li><li>SRAM code moved back from ROM to EWRAM, since doing that doesn&#x27;t make <a href="https://problemkaputt.de/gba.htm">No$gba</a> crash anymore.</li><li>Redundant reset code removed.</li></ul></section><section id="changelog_4_2_0"><h2><a href="#changelog_4_2_0">4.2.0</a></h2><ul><li>Sprite and background palettes can be generated from images alone, without tiles or maps.</li><li><code>&lt;cstddef&gt;</code> is always included (<code>bn_cstddef.h</code> header file removed).</li><li><a href="classbn_1_1unordered__map.html" class="m-doc">bn::<wbr />unordered_map</a> and <a href="classbn_1_1unordered__set.html" class="m-doc">bn::<wbr />unordered_set</a> assignment fixed.</li></ul></section><section id="changelog_4_1_0"><h2><a href="#changelog_4_1_0">4.1.0</a></h2><ul><li>H-Blank effects optimized (it fixes <code>world_map</code> example flickering).</li><li>SRAM code moved from EWRAM to ROM to avoid a <a href="https://problemkaputt.de/gba.htm">No$gba</a> crash.</li></ul></section><section id="changelog_4_0_0"><h2><a href="#changelog_4_0_0">4.0.0</a></h2><ul><li>Affine backgrounds support. See <a href="group__affine__bg.html" class="m-doc">Affine backgrounds</a> and the <code>affine_bgs</code>, <code>mode_7</code> and <code>world_map</code> examples for more.</li><li>bn::hblank_effect_ptr renamed to <a href="classbn_1_1hbe__ptr.html" class="m-doc">bn::<wbr />hbe_ptr</a> (all child classes have been renamed too).</li><li>bn::sprite_affine_mat_attributes renamed to <a href="classbn_1_1affine__mat__attributes.html" class="m-doc">bn::<wbr />affine_mat_attributes</a>.</li><li>bn::bg_tiles_ptr renamed to <a href="classbn_1_1regular__bg__tiles__ptr.html" class="m-doc">bn::<wbr />regular_bg_tiles_ptr</a>.</li><li>bn::bg_tiles_item renamed to <a href="classbn_1_1regular__bg__tiles__item.html" class="m-doc">bn::<wbr />regular_bg_tiles_item</a>.</li><li>bn::affine_mat_scale_lut replaced with <a href="group__math.html#ga21a22d7f03116a7613dd016d4dfdf37f" class="m-doc">bn::<wbr />reciprocal_lut</a>.</li><li>bn::core::cpu_usage() and bn::core::vblank_usage() renamed to <a href="namespacebn_1_1core.html#a5c36ceb40cf617f8ffa442bbf15126c1" class="m-doc">bn::<wbr />core::<wbr />last_cpu_usage()</a> and <a href="namespacebn_1_1core.html#aace6487154c238af8d207e0e400f6fcf" class="m-doc">bn::<wbr />core::<wbr />last_vblank_usage()</a>.</li><li><a href="group__math.html#gafc2a7463570f753f22185c1529bd9ee6" class="m-doc">bn::<wbr />lut_reciprocal()</a> added.</li><li><a href="namespacebn_1_1core.html#aed64f380e43b831c5b6b4602a508f811" class="m-doc">bn::<wbr />core::<wbr />current_cpu_usage()</a> added.</li><li><a href="https://github.com/rodri042/gba-link-connection">gba-link-connection</a> updated to v2.1.4.</li><li>HDMA is disabled when needed, like before sleeping or before an assert screen.</li><li><a href="classbn_1_1regular__bg__tiles__item.html#a69a9affd64eb36999c8290743a7a6103" class="m-doc">bn::<wbr />regular_bg_tiles_item::<wbr />valid_tiles_count()</a> fixed.</li><li><a href="namespacebn.html#a01f293535903e4c4777564a86a0f520b" class="m-doc">bn::<wbr />nullopt</a> documentation links fixed.</li></ul></section><section id="changelog_3_3_0"><h2><a href="#changelog_3_3_0">3.3.0</a></h2><ul><li>HDMA properly supported (now it works at less than 60fps). See <a href="namespacebn_1_1hdma.html" class="m-doc">bn::<wbr />hdma</a> and the <code>hdma_polygons</code> example for more.</li><li><a href="https://github.com/rodri042/gba-link-connection">gba-link-connection</a> remote timeout detection fixed.</li></ul></section><section id="changelog_3_2_1"><h2><a href="#changelog_3_2_1">3.2.1</a></h2><p><a href="classbn_1_1optional.html" class="m-doc">bn::<wbr />optional</a> build fix.</p></section><section id="changelog_3_2_0"><h2><a href="#changelog_3_2_0">3.2.0</a></h2><p><a href="classbn_1_1optional.html" class="m-doc">bn::<wbr />optional</a> is now <code>constexpr</code>.</p></section><section id="changelog_3_1_0"><h2><a href="#changelog_3_1_0">3.1.0</a></h2><ul><li><a href="classbn_1_1regular__bg__map__ptr.html#a397d70a0c80cf5c9ef2a1f99927b28be" class="m-doc">bn::<wbr />regular_bg_map_ptr::<wbr />tiles_offset()</a> and <a href="classbn_1_1regular__bg__map__ptr.html#a7528742121e00d8ea9993b71847cc4dd" class="m-doc">bn::<wbr />regular_bg_map_ptr::<wbr />palette_banks_offset()</a> methods added.</li><li>Allocated background tiles and maps commit fixed.</li></ul></section><section id="changelog_3_0_0"><h2><a href="#changelog_3_0_0">3.0.0</a></h2><p>Thanks to the awesome <a href="https://github.com/rodri042/gba-link-connection">gba-link-connection</a>, multiplayer support has been implemented! See <a href="namespacebn_1_1link.html" class="m-doc">bn::<wbr />link</a> and the <code>link</code> example for more.</p></section><section id="changelog_2_0_0"><h2><a href="#changelog_2_0_0">2.0.0</a></h2><ul><li>By removing some method overloads, lots of runtime asserts when creating resources have been removed.</li><li>bn::palette_bpp_mode has been renamed to <a href="group__color.html#gac2f168d95746d61f442c3d3eadffc77e" class="m-doc">bn::<wbr />bpp_mode</a> and <code>bpp_mode()</code> methods have been renamed to <code>bpp()</code>.</li><li>8 bits per pixel background tiles allocation fixed.</li></ul></section><section id="changelog_1_0_0"><h2><a href="#changelog_1_0_0">1.0.0</a></h2><ul><li>Regular maps bigger than 512x512 supported.</li><li>32bit integer division by 0 assert added.</li><li><a href="classbn_1_1regular__bg__item.html" class="m-doc">bn::<wbr />regular_bg_item</a> maximum tiles check added.</li><li><a href="classbn_1_1regular__bg__item.html" class="m-doc">bn::<wbr />regular_bg_item</a> generation options fixed.</li></ul></section><section id="changelog_0_4_0"><h2><a href="#changelog_0_4_0">0.4.0</a></h2><ul><li><code>btn</code> renamed to <code>bn</code>. No more API breaks will be made between minor releases after 1.0.0, promise.</li><li>Background tiles manager status can be printed in the log with <a href="namespacebn_1_1bg__tiles.html#ad5a2942ef2949f9df246367e55a8f46a" class="m-doc">bn::<wbr />bg_tiles::<wbr />log_status()</a>. This is done automatically when a non-optional background tiles allocation fails too.</li><li>Background regular maps manager status can be printed in the log with <a href="namespacebn_1_1bg__maps.html#ab9a11f9072c42e4843cecc10690ce1aa" class="m-doc">bn::<wbr />bg_maps::<wbr />log_status()</a>. This is done automatically when a non-optional regular background map allocation fails too.</li><li>Sprite tiles manager status can be printed in the log with <a href="namespacebn_1_1sprite__tiles.html#ac38355bc66b2f69750241c73662dcf6c" class="m-doc">bn::<wbr />sprite_tiles::<wbr />log_status()</a>. This is done automatically when a non-optional sprite tiles allocation fails too.</li><li>Color palettes managers status can be printed in the log with <a href="namespacebn_1_1bg__palettes.html#a34c88e1d5175821828bfa1a87f3d9a6e" class="m-doc">bn::<wbr />bg_palettes::<wbr />log_status()</a> and <a href="namespacebn_1_1sprite__palettes.html#a029d633f1be5d839af468a9c8e02b986" class="m-doc">bn::<wbr />sprite_palettes::<wbr />log_status()</a>. This is done automatically when a non-optional color palette allocation fails too.</li><li>Sprites destruction optimized.</li><li>Setters with an optional parameter added to some classes.</li><li>Optional components documentation fixed.</li><li>Other documentation improvements.</li></ul></section><section id="changelog_0_3_0"><h2><a href="#changelog_0_3_0">0.3.0</a></h2><ul><li>Sprites update performance improved up to 30% in Butano Fighter thanks to avoid rebuilding sprites list as much as possible.</li><li>Profiler can show the maximum measured ticks per entry.</li><li>Assets tools print output binaries size.</li></ul></section><section id="changelog_0_2_0"><h2><a href="#changelog_0_2_0">0.2.0</a></h2><ul><li>Performance improved up to 12% in Butano Fighter without <code>-flto</code> thanks to using less build translation units.</li><li>Documentation improved.</li></ul></section><section id="changelog_0_1_0"><h2><a href="#changelog_0_1_0">0.1.0</a></h2><p>First release.</p></section>
      </div>
    </div>
  </div>
</article></main>
<div class="m-doc-search" id="search">
  <a href="#!" onclick="return hideSearch()"></a>
  <div class="m-container">
    <div class="m-row">
      <div class="m-col-m-8 m-push-m-2">
        <div class="m-doc-search-header m-text m-small">
          <div><span class="m-label m-default">Tab</span> / <span class="m-label m-default">T</span> to search, <span class="m-label m-default">Esc</span> to close</div>
          <div id="search-symbolcount">&hellip;</div>
        </div>
        <div class="m-doc-search-content">
          <form>
            <input type="search" name="q" id="search-input" placeholder="Loading &hellip;" disabled="disabled" autofocus="autofocus" autocomplete="off" spellcheck="false" />
          </form>
          <noscript class="m-text m-danger m-text-center">Unlike everything else in the docs, the search functionality <em>requires</em> JavaScript.</noscript>
          <div id="search-help" class="m-text m-dim m-text-center">
            <p class="m-noindent">Search for symbols, directories, files, pages or
            modules. You can omit any prefix from the symbol or file path; adding a
            <code>:</code> or <code>/</code> suffix lists all members of given symbol or
            directory.</p>
            <p class="m-noindent">Use <span class="m-label m-dim">&darr;</span>
            / <span class="m-label m-dim">&uarr;</span> to navigate through the list,
            <span class="m-label m-dim">Enter</span> to go.
            <span class="m-label m-dim">Tab</span> autocompletes common prefix, you can
            copy a link to the result using <span class="m-label m-dim">⌘</span>
            <span class="m-label m-dim">L</span> while <span class="m-label m-dim">⌘</span>
            <span class="m-label m-dim">M</span> produces a Markdown link.</p>
          </div>
          <div id="search-notfound" class="m-text m-warning m-text-center">Sorry, nothing was found.</div>
          <ul id="search-results"></ul>
        </div>
      </div>
    </div>
  </div>
</div>
<script src="search-v2.js"></script>
<script src="searchdata-v2.js" async="async"></script>
<footer><nav>
  <div class="m-container">
    <div class="m-row">
      <div class="m-col-l-10 m-push-l-1">
        <p>Butano Docs. Created with <a href="https://doxygen.org/">Doxygen</a> 1.14.0 and <a href="https://mcss.mosra.cz/">m.css</a>.</p>
      </div>
    </div>
  </div>
</nav></footer>
</body>
</html>
